2012-07-25 47 views
1

我有一個jQuery ajax調用,在IE中正常工作,但在Chrome和Firefox中不斷出現錯誤。我在我的應用程序的其他地方也有類似的ajax調用,並且它們在所有瀏覽器中都能正常工作,但由於某種原因,這不會。jQuery ajax調用 - 獲取有意義的錯誤信息

首先,有沒有什麼明顯的,我在這裏會打破IE瀏覽器以外的瀏覽器,第二,同樣重要的是,有沒有辦法從error: function (e) {}塊中獲得有意義的東西?

   $.ajax({ 
       type: "POST", 
       url: "http://localhost:52350/FabRouting/Webservice/FinalizeFileStream.asmx/FinalizeFileStreamDoc", 
       data: JSON.stringify({ DocID: docID, FileSize: file.size }), 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success: function (data) { 
        if (data.d.length == 0) { 
         //error 
         $("[id$=txtResult]").val("error 0"); 
        } 
        else { 
         $("[id$=txtResult]").val(data.d[0].Result); 
        } 
       }, 
       error: function (e) { 
        //error 
        $("[id$=txtResult]").val("error"); 
       } 
      }); 
+0

打開控制檯(F12)並檢查錯誤是什麼意思。它應該返回一個asp.net錯誤頁面(如果您沒有客戶錯誤) – 2012-07-25 17:17:49

+0

JSON.stringify在某些瀏覽器中可用,但不是所有的瀏覽器都可用。您需要添加一個庫(如json2.js)以將該函數添加到不支持它的瀏覽器。 – 2012-07-25 17:18:43

+0

你提醒(e)或console.log(e)看看是什麼?另外,請嘗試使用Chrome開發工具。 (按Ctrl + Shift + J),打開控制檯查看錯誤。告訴我它說了什麼。 – 2012-07-25 17:18:43

回答

0

它最終不是我的代碼或瀏覽器(好吧),畢竟,只是我的錯誤。

我一直在研究和閱讀某人在跨域ajax調用給出錯誤時遇到問題。我不想這樣做,但是我確實有兩個Visual Studio Web服務器由於某種原因而啓動。我看了一下,我正在用一個硬編碼的url(http:// localhost:52350/FabRouting/Webservice .......)來調用Web服務,我正在使用新的url(http:// localhost :59986/FabRouting/Tes .....)來訪問該頁面。

由於某種原因,這在IE中工作正常,但是當我在Chrome或Firefox中嘗試它時,它無法正常工作。我改變了我訪問頁面的位置,並從ajax調用中獲得了很好的返回值。

我仍然想知道如何獲得更有意義的錯誤,@dtryan讓我參與其中。如果有人能幫我弄清楚,我會把他們標記爲答案,而不是這個答案。

編輯: 我後來發現我實際上能夠以我以前嘗試的方式獲得錯誤消息,以及@dtryan的建議方式。問題在於,由於某些原因,這是因爲它試圖跨域而引發錯誤,但我無法捕獲該錯誤。

我已經有內存不足的錯誤等,我能夠捕捉和看到的很好。我認爲這只是一場完美風暴,導致錯誤不可見。如果任何人有任何方法來捕捉這些錯誤,這將是很好的知道。

+0

這是導致它在IE – 2012-07-25 19:02:16

+0

工作u能告訴我你的開發人員工具得到什麼錯誤可能緩存或螢火蟲? – 2012-07-26 12:55:45

+0

我沒有得到任何錯誤,這是問題所在。我不知道我是否正確捕獲錯誤,因爲我沒有得到任何錯誤。當我最終看到螢火蟲時,我意識到我也沒有在那裏發生任何錯誤。現在我已經解決了這個問題,我繼續收到其他錯誤,並且能夠捕獲這些錯誤。謝謝! – divtag 2012-07-26 19:02:56

3

誤差函數,而你只使用一個有三個參數

error: function(jqXHR, textStatus, errorThrown) { //code here } 

。 errorThrown應該有一些更有用的信息。

編輯2 - 劃傷我的答案關於它打破,因爲鍵不是字符串 - 應該沒問題。但是,如果您正在使用帖子,爲什麼要將數據串化?你應該能夠直接傳遞json數組。

+0

目前我正在試圖弄清楚如何使用錯誤的代碼(jqXHR,textStatus,errorThrown)行什麼我現在有,但是是我試圖把在JSON.stringify引號,它不會改變任何東西。 – divtag 2012-07-25 17:27:12

+1

@divtag你需要更新你的錯誤函數以使用所有三個參數: 'error:function(jqXHR,textStatus,errorThrown){ // error $(「[id $ = txtResult]」).val(「error 「); }' – dtryan 2012-07-25 17:29:03

+0

@divtag另外,請參閱我的第二個編輯:如果您正在使用文章,爲什麼要將數據串化?你應該能夠直接傳遞json數組。我的猜測是,它使得它返回一個參數,而FinalizeFileStreamDoc期待兩個。 – dtryan 2012-07-25 17:34:18