每次執行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