每次执行jquery $ .post()时,我都会收到“取消”状态。这似乎是一个异步的问题?我访问本地项目与http://127.0.0.1:8933/myproject/default/index.html
的index.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数据传递给我的处理函数在服务器上。但是,我会看到警告消息“失败!”即使数据已经处理,每次都会弹出。在铬的调试面板中,我在“网络”选项卡下看到该帖子的状态为“(已取消)”,整行将以红色突出显示。所述类型是“待定”。
我认为这是一个异步问题,但我不确定如何解决它。
谢谢。这工作。我对javascript不熟悉,但我认为'doPost()'中的'.then()'会等到请求完成。 – Bak 2013-05-08 15:59:55
它的确如此,但原始动作(点击链接)没有。 – JJJ 2013-05-08 16:00:38
@Bak Juhana说的是什么。这些行为是完全不同的,分开的。 – Ian 2013-05-08 16:02:56