2012-07-25 51 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