2011-05-15 15 views
0

我使用jQuery一些非常簡單的AJAX調用解析錯誤。
我的c#webmethods被標記爲[ScriptMethod(ResponseFormat = ResponseFormat.Json)] 並返回格式正確的JSON。
這在FF的偉大工程,但在IE瀏覽器都瘋了:
錯誤處理程序被調用,其中responsestatus = 200(!!),該responseText是有效的JSON我想要得到的,而statusText"parsererror"的jQuery + IE 7和8 - 讓JSON數據時

我看到SO上的某個地方(似乎無法再次找到它),問題在於IE需要xml格式響應,並在其他任何地方拋出解析器異常。
建議的解決方案中,基本上,使用錯誤處理程序是成功的處理程序:

$.ajax(
      { 
       url: "SampleScriptService.asmx/Function", 
       type: "POST", 
       data: {}, 
       contentType: "application/json;", 
       dataType: "json", 
       success: function (result) { 
        SuccesFunction(result.d); 
       }, 
       error: function (e) { 
        if (e.status != 200) { 
         alert("this is a real error"); 
        } 
        SuccesFunction(JSON.parse(e.responseText).d); 
       } 
      }); 

這似乎真的哈克給我。有誰知道任何其他解決方案?
p.s.事情我已經嘗試:thesethis,所有的解決方案建議here

UPDATE
不知道是否它的相關與否,但IE瀏覽器也給這個奇怪的錯誤 -

Expected ';' Line: 101139813 Char: 5 Code: 0 URI: http://localhost/sample/samplePage.htm 

不用說,我的htm文件包含〜100行。
如果我不做ajax調用(因此 - 上述錯誤處理程序未被調用),則不會出現此錯誤。

+0

不知道你試過的建議是,但有一個問題,你的'contentType'是JSON,但您的數據是一個空字符串。試試'data:「{}」,使它成爲一個空的JSON對象。 – lonesomeday 2011-05-15 12:03:34

+0

@lonesomeday:嘗試過;還是一樣。 – 2011-05-15 12:28:06

回答

0

好的,這完全是我的壞處。我從jQuery 1.4.4升級到jQuery 1.6,並沒有注意到我的頁面在所有瀏覽器上實際上都有問題。
問題出在驗證插件上,如this question中所述。
感謝所有花時間回答的人。

1

如果這只是發生在IE瀏覽器則是因爲在你的迴應錯字的。請顯示您從服務器獲得的json。你有一個對象,最後一個項目有一個逗號逗號。

像這樣

{ "l1" : 1, "l2" : 2, } 

看到這是如何與, }結束?它只需要以}結束。

只是爲了確認,json看起來像這樣沒有圍繞"

{"d": 
    {"__type":"PresentationObjects.UserPO", 
    "Username":"admin", 
    "FullName":"Admin User", 
    "Password":"", 
    "Roles":15, 
    "UserRolesStrings": ["monitor","reports","schedule"­,"administration"], 
    "IsAdministrator":true, 
    "IsMonitor":true, 
    "IsSchedule":true, 
    "IsR­eports":true 
    } 
} 

我看到它說的角色是15,但你只顯示4.你編輯的結果?

+0

nope。我發送的回覆是:「{」d「:null}」... – 2011-05-15 11:56:28

+0

這是你的問題。你沒有發送數據。至少發送一些東西。 – Hogan 2011-05-15 12:23:45

+0

例如'{「d」:{「d」:無}}應該工作 – Hogan 2011-05-15 12:24:40