一般而言,在無特別的情況下

需要前後端傳值的時候都會需要ajax傳遞值的時候

可是有時候明明前後端都沒有錯誤,可是傳值卻一直失敗,或一直抓不到回傳值

可能會回傳 undefined 又可能是null 

是為什麼呢?

有大部分的原因是在於  async 的地方

以下是回傳失敗的範例(會是undefined 或 null) :

$.ajax({
       type:'POST',
       url:'Tools/abc.ashx?mode=abc',
       dataType:'json'
}).success(function(data){

    alert(data);

});

 

在這種情況下,如果確定自己的ajax事都沒有錯誤,就單純抓不到值的話

可以把ajax的設定加入以下這段 : async:false

就會變成

 

$.ajax({
       type:'POST',
       url:'Tools/abc.ashx?mode=abc',
       dataType:'json',

       async:false
}).success(function(data){

    alert(data);

});

 

完成這個工作後 會發現要抓的data值已經成功抓取到了。

======================我是分隔線========================

這個東西的意思是說

我上google翻譯 是說這個東西是 "異步"

(以下為個人見解,若有錯誤請提出更正XD)

以我個人見解解釋成

這個東西是 如果沒有打出來,沒有特別設定,預設會是true 也就是說,現在就是  異步=成立(對的) 

表示說  現在這個ajax會去後台跑一些程式,而前端的程式success裡的程式它會先執行

等於是說 他現在是非同步的 後台跟前台都會同時做事情

那如果加了,就會變成

異步=不成立(不對)

顧名思義就是 我不要異步 我不要不同進行程式,

當你加上async的時候,它就會依照流程ajax跑進來後會先到後台執行完程式,而且回傳值

後才會執行到success裡面的程式

 

另外ajax裡面的 abc.ashx 是每個人傳的位置不一樣,因為我傳是傳到ashx裡面 有些人會是php或其他檔案 麻煩自行修改檔名跟副檔喔!

而ajax裡的mode是我個人這個ashx會用到蠻多次 ,藉由switch跑不同的function 若只用一次 即可不用mode

 

 

arrow
arrow

    Jungle 發表在 痞客邦 留言(0) 人氣()