2012-06-19 73 views
0

我有這個超級怪異的bug,在IE9中這個方法失敗。 什麼是超級奇怪的是,如果IE [開發工具]是,方法不會失敗。我不知道如何通過打開窗口來改變腳本的執行。jQuery ajax在IE中失敗

當我用IE [Developer Tools]打開時執行這個腳本時,函數按預期執行。 當IE [開發工具]是封閉的,它執行:

alert("00000000000000000000000000000000000"); 
    alert("4444444444444444444"); 

就是這樣,沒有其他警報被觸發。

我嘗試刪除timeout: 20000cache: false,但它沒有幫助。

function postAssets(datapm) { 
     alert("00000000000000000000000000000000000"); 

     $.ajax({ 
      type: "POST", 
      url: "Igud.aspx/PostD", 
      cache: false, 
      contentType: "application/json; charset=utf-8", 
      data: '{"postedData":"' + datapm + '"}', 
      dataType: "json", 
      timeout: 20000, 
      tryCount: 0, 
      retryLimit: 10, 
      success: function (msg) { 
       alert("4444444444444444444"); 
       console.log('success postAssets ' + msg.d); 
      }, 
      complete: function (jqXHR, status) { 
       alert("44444444444aaaaaaaaaaaaaaaaaaaaaaaaaaaa44444444"); 
       if (status == 'success' || status == 'notmodified') { 
        alert("aaaaaa"); 
        console.log('complete postAssets' + jqXHR.responseText); 

        var obj = jQuery.parseJSON(jqXHR.responseText); 

        alert("bbbb"); 
        // alert(parseInt(obj.d)); 
        // alert(parseInt(obj.d) == 1); 
        if (parseInt(obj.d) == 1) { 
         $("#thxbox").html("TEST"); 
         alert("ccc"); 

         if ($("#Q3_3").attr('checked') == 'checked') { 
          $("#thxboxMd").dialog("option", { height: 470 }); alert("dddd"); 
          $("#thxboxReg").show(); alert("eeee"); 
          $("#thxbox").effect("pulsate", { times: 3 }, 1200); alert("ffff"); 
         } 
         else { 
          $("#thxboxReg").hide(); 
          $("#thxboxMd").dialog("option", { height: 180 }); 
         } 

         $("#thxboxMd").dialog("open"); 
         $("body").off("click", "#sbbtn"); 

         $('body').on('click', '#sbbtn', function() { 
          $("#thxbox").html("TEST"); 

          if ($("#Q3_3").attr('checked') == 'checked') { 
           $("#thxboxMd").dialog("option", { height: 470 }); 
           $("#thxboxReg").show(); 
           $("#thxbox").effect("pulsate", { times: 3 }, 1200); 
          } 
          else { 
           $("#thxboxReg").hide(); 
           $("#thxboxMd").dialog("option", { height: 180 }); 
          } 

          $("#thxboxMd").dialog("open"); 
         }); 

        } 
        else { 
         $("#thxbox").html("TEST"); 
         $("#thxboxMd").dialog("open"); 
         $("#thxbox").effect("pulsate", { times: 3 }, 900); 
        } 
       } 
      }, 
      error: function (req, status, error) { 
       alert("444444444444411111111111111111112222222222222222444444"); 
       this.tryCount++; 
       if (this.tryCount <= this.retryLimit) { 
        var offSet = this.tryCount * 1000; 
        getAssetsRecovery = this; 
        var retry = function() { $.ajax(getAssetsRecovery); }; 
        setTimeout(retry, offSet); 
        console.log(arguments); 
        console.log('error postAssets' + error); 

        $("#thxbox").html("TEST"); 
        $("#thxboxMd").dialog("open"); 
        $("#thxbox").effect("pulsate", { times: 3 }, 900); 

        return; 
       } 
       console.log('error postAssets'); 
      } 
     }); 

}

+0

嘗試刪除IE瀏覽器緩存,看看會發生什麼 – Shyju

+0

我做了它,我寫在OP –

+0

嘗試使用'window.console.log ' –

回答

3

這是否回答你的問題?當調試器尚未打開時,控制檯對象似乎不可用。

Does IE9 support console.log, and is it a real function?

+1

偉大的一點。我不喜歡使用console.log()。對我來說,製作一個自定義函數是非常有意義的,它允許您安全地嘗試將消息記錄到控制檯,並始終調用它。該函數應該嘗試,但如果console.log或其他任何不可用/可能的情況下會靜默失敗。 – Ian

+0

該死的,這一次幾乎讓我死亡。我永遠不會再使用控制檯。這是對背叛我在過去十年中使用的Alert()框的懲罰。 –

0

你的第一個警告是

alert("00000000000000000000000000000000000"); 

當函數是成功它提醒alert("4444444444444444444");

,它不會進入錯誤,功能齊全,警報將只對那些相應的事件發生(如果它的錯誤或別的..)

嘗試更改url: "Igud.aspx/PostD",到別的東西..你會得到錯誤部分 '