2011-04-21 50 views
21

每次我运行我的ajax jquery函数时出现错误,这适用于我所有的ajax调用。 这里是我的代码示例ajax jquery始终运行错误

function FindContact(CompanyName,DivisionName,FirstName,LastName) { 

     $.ajax({ 
      url: 'Path', 
      dataType: "json", 
      async:false, 
      type:'post', 
      data: {'FirstName':FirstName,'LastName':LastName,'DivisionName':DivisionName,'CompanyName':CompanyName}, 
      success: DisplayContacts, 
      error: ErrorMsg 
     }); 
    } 

来解决这个我用这个

function ErrorMsg(result) { 
     if (result.status == 200 && result.statusText == 'OK') { 
      DisplayContacts(result); 
     } 
     else { 
      alert("FAILED : " + result.status + ' ' + result.statusText); 
     } 
    } 

这是艰难的,因为我需要这样的创建方法为每一个Ajax请求。

它为什么运行错误代码1st?

请帮忙!

+2

确保你要返回的是有效的json。如果没有,并且服务器上的所有内容都正确,$ .ajax将会出错而不是成功。 – locrizak 2011-04-21 13:33:36

+0

你好, - 你是否检查过状态码是什么(使用.alert())? - 您是否检查过目标页面使用相同的方法将结果发回? – reporter 2011-04-21 13:35:06

+0

@locrizak:如何检查我是否返回了有效的json – David 2011-04-21 13:41:31

回答

44

确保您返回的是有效的json。如果没有,并且服务器上的所有内容都正确,$ .ajax将会出错而不是成功。

 
function FindContact(CompanyName,DivisionName,FirstName,LastName) { 

     $.ajax({ 
      url: 'Path', 
      dataType: "html or json", 
      async:false, 
      type:'post', 
      data: {'FirstName':FirstName,'LastName':LastName,'DivisionName':DivisionName,'CompanyName':CompanyName}, 
      success: DisplayContacts, 
      error: ErrorMsg 
     }); 
    } 
 

快速检查json是否有效只是将dataType切换到html并看到成功被触发。如果它比你的json无效,如果你仍然遇到同样的问题,那么他们还有其他错误。

检查是否返回有效的json的另一种方法是打开firebug,当发送请求时,单击响应选项卡,复制响应并到达jsonlint.com以检查其是否有效。

Jquery ajax docs

+0

你说得对。它适用于html – David 2011-04-26 20:53:34

+0

更改为:dataType:“json” - 像魅力一样工作! – 2016-03-15 13:44:02

2

我的解决办法是差异接受型和Content-Type头。如果客户端请求的Accept-Type头与服务器端响应的Content-Type头不匹配,那么Jquery将调用错误回调。

默认情况下,Jquery将Accept-Type头设置为application/json。但是,我的服务器正在发送Content-Type application/x-javascript的响应。我的修复是将服务器端响应Content-Type标题更改为适当的application/json

+0

您是如何更改服务器端的内容类型标题的? +1,如果你回答我。 – David 2013-07-03 09:07:25

+2

你有什么服务器端环境?我在PHP上是这样的: 'header('Content-Type:application/json');' – charltoons 2013-07-22 00:20:39

2

我在使用jquery ajax进行ajax调用时遇到了同样的问题。我固定它使用下面的代码:

$.ajax({ 
    url: "/url", 
    dataType: 'text', 
    success: function(result){ alert(result); }, 
    error: ErrorMsg, 
}); 

注:数据类型:“文本”参数,它为我工作。