2011-07-30 63 views
1

我有這個幾乎完整的jQuery項目,對於用戶數據成功驗證後的最後部分,它使用$ .post函數執行外部PHP腳本,並將用戶輸入的信息作爲參數傳遞。

雖然我的問題是,我的回調函數只適用於如果我把警報功能後。

作品:

$.post("backend.php", dataString, 
    function(response) { 
     if (response=="1") { 
      alert("ok"); 
     } 
    }, 'html'); 

alert('test'); 

但是,如果我不把該警報的結束標記之後,我的腳本沒有做警報「OK」,或任何回調人。

你們有沒有看到我的代碼有什麼問題?

謝謝!

+0

任何這運氣?我有同樣的問題。謝謝! –

+0

@AdamStorr對不起,不過這個項目很早以前就已經完成了,我最終重寫了修復它的代碼:/。 – Souleiman

回答

2

我的猜測是在$.post()腳本之後有一些東西會導致頁面更改或導致帖子停止或失敗。

從根本上說,所有alert('test')確實會阻止您的代碼等待OK按鈕被按下。唯一能讓你的代碼突然工作的方法就是在第二次提醒後,在代碼中執行了一些東西,這會讓你的代碼搞砸了。

記住帖子是異步的。它會在後臺執行,而您運行的任何其他代碼都會運行,並且只有在運行成功時纔會運行alert('ok')

所以,我的猜測是,您的網頁上的其他內容正在運行,並搞亂了帖子。

+0

有點晚了,但這是任何人都可以解決問題的最接近的建議,所以我接受並感謝! – Souleiman

1

所以我遲到了這裏的派對,但我遇到了似乎完全相同的問題,並最終找到了解決方案。在我的情況下,我有一個表單提交按鈕,我也試圖用作JQuery POST調用的觸發器。問題是當表單被提交時,它顯然取消了JQuery POST調用。

在我的情況下,分辨率是改變提交按鈕,只是一個普通的按鈕,然後執行的形式在同一jQuery函數作爲提交的POST調用 -的POST調用後。我還需要在表單提交的調用中引入一小段延遲。因此,它是這樣的:

$("#saveStuff").click(function() { //my save button, no longer a submit 
     $.post('UpdateStatusFlag', {}, function (data) { 
       //some irrelevant stuff here 
      } 
     }); 
     setTimeout("$('#MyForm').submit()", 100); //needed the small delay to allow the post call to complete 
}); 

希望這有助於一些人在那裏做,我做了同樣的錯誤。

1

這裏的年輕球員(比如我)非常微妙的陷阱。我做的事情完全一樣,張貼在表單的提交事件上。當然,表單同時提交和發佈帖子,所以當帖子的回覆返回時,表單已經刷新並重置。混亂統治。

在我的情況下,我並不是真的想要表單實際上提交,因此在我的提交函數中添加return false;作爲最終語句將它很好地整理出來。

例如爲:

$('#myForm').submit(function() { 
    $.post('myurl',{some params}); 
    return false; 
}; 
相關問題