2008-11-15 58 views
0

聽起來像一個奇怪的問題,但說我有這樣的事情:如何取消服務器端的ajax查詢(來自jquery)?

$.post("/myajax.php", 
     { "param1": value1, "param2": value2 }, 
     function(data, status) { 
      if(status == "success") { 
       $("#someid").html(data); 
      } 
     }, "html"); 

雖然myajax.php做任何需要做的,它決定了它不需要做任何改動#someid。如果它剛剛返回,那麼someid元素會空白,但我想讓它保持獨立。怎樣才能以這樣的方式返回php查詢status != "success"

回答

4

檢查返回的數據不是更簡單嗎?

$.post("/myajax.php", { 
     "param1": value1, 
     "param2": value2 
    }, function(data, status) { 
     if(data != "") { 
      $("#someid").html(data); 
     } 
    }, 
    "html" 
); 
+0

是和否,都是非常基本的想法,我猜,返回一個非200 OK似乎更「正確」,因爲它改變了狀態碼。 – Owen 2008-11-15 00:55:26

4

ajax調用將任何200 OK視爲成功。因此您可以從您的PHP腳本中返回其他內容來觸發您的ajax中的錯誤。

here是一些其他狀態代碼,以防您想選擇更合適的事情。

編輯:我不一定這種做法不以爲然,但我仍然傾向更加趨向於狀態消息操作(HTTP狀態),而不是響應主體。

我的想法是,在所提及的後期交易中,您正在更新資源。人們可以合理地假定你期望的一二的兩大麻煩發生(在「成功」條件):

  1. 200 OK是指內容被張貼沒有問題,並將得到的反應通常是顯示新的內容。 ajax方法通過允許您獲取響應主體來更新您的UI來「強制執行」此行爲。

  2. 在更新不需要完成的情況下,200 OK也可以(因爲請求按預期進行處理),但也許204 No Content更好,因爲它表明請求已完成,但沒有必要改變視圖。我傾向於認爲這與ajax調用更加聯繫,因爲您可以忽略響應主體(因爲沒有響應主體),並根據狀態進行操作(204?更新UI以表示「不需要更改」或類似)

相關問題