gpt4 book ai didi

javascript - React Router 导致 Reflux 存储中的 AJAX 调用失败

转载 作者:行者123 更新时间:2023-11-30 16:28:50 26 4
gpt4 key购买 nike

我在 Reflux 商店中有以下 AJAX 调用:

$.ajax({
url: 'submit.php',
context: this,
method: 'POST',
dataType: 'json',
success: function(data){...},
error: function(jqXHR, textStatus, error){...}
});

这是我的路线:

let browserHistory = createBrowserHistory();
ReactDOM.render((
<Router history={browserHistory}>
<Route path="/" component={App}>
<IndexRoute component={About} />

<Route path="about" component={About} />
<Route path="leaderboards" component={LeaderboardPage} />
<Route path="profile" component={Profile} />
<Route path="validate/:projectName" component={Validate} />
</Route>
</Router>
), document.getElementById('app'));

每当 Validate 组件要求它的商店发出 AJAX 请求时,请求就会发送到 validate/submit.php 而不是 submit.php。怎么回事?

最佳答案

由于您只向 $.ajax 提供文件名而不是绝对路径或 URL,因此浏览器将其用作相对 URL。由于当前页面的 URL 路径是 /validate/foo(不要介意它是由 history.pushState 设置的;浏览器没有区别),它假定您想要请求相对于该路径的 submit.php,即 /validate/submit.php

在浏览器中发出请求时,您应该始终使用绝对路径或完整 URL,例如:

$.ajax({
url: '/submit.php',
// ...
});

关于javascript - React Router 导致 Reflux 存储中的 AJAX 调用失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33663840/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com