Ajax调用触发错误事件但返回200 ok
$.ajax({ url: 'http://intern-dev01:50231/api/language', type: 'GET', dataType: 'json', success: function() { console.log('It Works!'); }, error: function (request,status, error) { console.log(error); alert(status); } });
为什么这个ajax调用不起作用? 如果我在浏览器中调用它可以正常工作:/。
这就是小提琴手的回报:
HTTP/1.1 200 OK Content-Length: 122 Content-Type: application/json; charset=utf-8 Server: Microsoft-HTTPAPI/2.0 Date: Fri, 26 Apr 2013 06:56:40 GMT [{"LanguageId":1,"LanguageName":"Dansk"},{"LanguageId":2,"LanguageName":"Tysk"},{"LanguageId":3,"LanguageName":"Engelsk"}]
你必须检查ajax响应是否有效。 在ajax中指定时:
dataType: 'json',
如果响应无法解析为JSON,jQuery将触发错误事件,即使服务器返回200 OK。 检查从服务器返回的数据,并确保它是有效的JSON(尝试JSONLint服务)。
如果返回的数据不是JSON或它有语法错误,那么在服务器端代码中修复它们。 您可以从服务器端脚本返回{}。
也试试这个。
$.ajax({ url: 'http://intern-dev01:50231/api/language', type: 'GET', cache: false, complete: function (xhr, status) { if (status === 'error' || !xhr.responseText) { console.log(error); alert(status); } else { console.log('It Works!');. } } });
由于状态显示200 OK,因此存在解析错误。 问题出在数据类型:json。 要测试这个,删除该行,它应该工作。 为了解决这个问题,您可以将其更改为数据类型:text。 对于类似的问题,请参阅此链接
我知道我有点晚了,但我遇到了同样的问题,这是Google上搜索结果最好的一个。 我设法通过将数据类型移动到url上面来修复它,如下所示:
$.ajax({ type: 'GET', dataType: 'json', url: 'http://intern-dev01:50231/api/language', success: function() { console.log('It Works!'); }, error: function (request,status, error) { console.log(error); alert(status); } });
如果您使用其他Web应用程序和Web API应用程序进行本地测试,则调试您的应用程序并测试API正确发送数据,并通过AJAX调用API并返回数据。
因为运行应用程序时,域名不相似AJAX调用没有达到成功function。 因为浏览器会阻止Cross Site request
。 如果您在本地和调试中发布这两个应用程序,它的工作正常。
希望这对某人有所帮助。
检查url参数并确保其与加载的页面相同。 您可能正在进行跨域ajax调用。 如果您想要进行跨域ajax调用,请注意允许进行跨域请求的唯一数据类型是“script”和“jsonp”。
在开源环境中遇到此问题,其中URL是IP地址,页面加载了指向该IP的域名。
- 使用WordPress将video上传到YouTube
- 如何通过AJAX / jQuery进行OAuth身份validation?
- 如何访问Tumblr API Photo Data Feed(即所有照片,整个存档)?
- Yahoo Weather,Yahoo GeoPlant,Google Weather或其他用javascript连接的API?
- jquery ajax调用时间太长或者什么的
- Javascript API在主站点上运行正常,但无法在外部服务器上运行
- 通过其API作为.click的一部分调用JQUERY插件(超大)的函数
- 使用jQuery的Youtube iframe播放器JS API – 播放器对象没有方法’getPlayerState’
- 使用jQuery进行Forecast.io API使用