每当我执行 jquery $.post() 时,我都会收到“已取消”状态。看起来像是异步问题?我通过以下方式访问本地项目http://127.0.0.1:8933/myproject/default/index.html
索引.html:
<script>
$(document).ready(function() {
$('#mybutton').click(function() {
var post_url = get_url(); // resolves to "/myproject/default/process_func"
var data = ...;
do_action(post_url, data);
});
});
</script>
<a href="" id="mybutton"> Click me! </a>
util.js:
function doPost(url, data) {
$.post(url, data).then(doSuccess, doFail):
function doSuccess(data) {
alert('Successful!');
}
function doFail(data) {
alert('Failed!');
}
}
function do_action(url, data) {
var jsondata = JSON.stringify(data);
// some other stuffs...
doPost(url, jsondata);
}
这个想法是将一些数据发送回服务器以使用 json 数据进行处理。用户将单击锚点按钮,do_action()
将会触发,然后它会被发布在doPost()
.
这似乎有效,因为我看到 json 数据传递到服务器上的处理函数。但是,我会看到警报消息“失败!”即使数据已被处理,每次都会弹出。在 chromium 的调试面板中,我在“网络”选项卡下看到该帖子的状态为“(取消)”,整行将以红色突出显示。指定的类型是“待处理”。
我认为这是一个异步问题,但我不确定如何解决它。
使用它可以取消默认的导航行为<a>
:
$('#mybutton').click(function(e) { // <-- Add `e` here
e.preventDefault(); // <-- Add this line
var post_url = get_url();
var data = ...;
do_action(post_url, data);
});
我相信浏览器会中止 AJAX 请求,因为单击链接时,尽管请求确实被发送,但链接会尝试导航到新页面,因此浏览器必须中止打开的 AJAX 请求。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)