jQuery的ajax訪問後臺的函數,有時正常,有時報鏈接錯誤的問題總結

場景:優惠券領取,用戶分爲兩種,1.沒有另過優惠券的;2.領過優惠券的;領過優惠券的又分爲當前優惠券是否過時。javascript

jQuery:
 php

$("#btn-coupon").click(function(){
        var busTeam =$(".busTeam").text().trim();
        var account =$(".account").val();
        $.ajax({
            type:'POST',
            url:"xxxxxxxx",
            data:{
                busTeam:busTeam,
                account:account
            },
            cache:false,
            async:false,
            dataType: 'text',
            success:function(data){
                //document.write(data);return false;
                alert(data);
                //document.write(data);
            },
            error:function(data){
                alert("領取失敗~");
            }
        });
    });
  • 沒有領過優惠券的,去領優惠券是正常不會報錯的。
  • 領過優惠券,而且已通過期(過時就能夠領新的優惠券),出問題,報鏈接錯誤,即ajax的回調函數是 error的function,輸出領取失敗~

問題的解決過程:前端

最初:我將問題定位在了前端的代碼出錯,可是我並無 找到什麼看得見的錯誤,將須要傳遞的參數都輸出了,結果也是能夠輸出的。java

而後,再去找該ajax訪問的函數。ajax

找的方法是:在每一個小代碼塊的前頭 echo 1;exit;逐個代碼塊調查,而後鎖定在那一部分區域出問題,而後仔細檢查:async

發現是一個變量的前面多了一個$符號。函數

爲何會有時候能夠,有時候又不能夠呢?測試

緣由分析:url

該函數裏面的代碼是由多個if-else語句組成,訪問沒有問題的時候就是進入了,沒有語法錯誤的代碼裏。而訪問出錯時就是進入了語法不規範的代碼塊裏。code

我特意作了個測試:

1.

if(1){
    echo 123;
}else {
    $$m =0;
}
// 會輸出1,沒有任何錯誤提示

2.

if(1){
    echo 123;
}else {
    $$
}

報錯:

3.

if(0){
    echo 123;
}else {
    $$m =0;
}

報警告提示:

  • 能夠總結,php,儘管你的代碼裏面有語法不規範(不是致命錯誤),只要你的邏輯不執行這一部分代碼,php是不會報錯的。
  • 出現ajax回調error函數,只要你的訪問連接沒有錯,很大程度上你目標函數有語法錯誤,或語法不規範。
相關文章
相關標籤/搜索