2013-05-01 66 views
0

我正在尝试使用jQuery向其他服务器发送AJAX请求。我在本地经营。如果我使用HTML数据类型,我会得到经典的Origin http://127.0.0.1 is not allowed by Access-Control-Allow-Origin。所以,我开始使用JSONP请求:使用AJAX从另一台服务器接收数据

$.ajax({ 
    url: 'SomeRemoteServer/SomeFile', 
    dataType: 'jsonp', 
    success: function(data) { 
     // do stuff 
    }, 
    error: function(d,msg) { 
     alert(msg); 
    } 
}); 

的擦肩而过误差为parsingerror和Chrome JS调试器输出Resource interpreted as Script but transferred with MIME type text/html。仔细查看网络上的这个错误后,我发现错误来自于服务器,而不是我的脚本(它应该发回MIME类型application/json或类似的东西)。

好吧,似乎服务器正在发送一些东西......我想赶上响应和自我处理解析。这是可行的吗?如果是的话如何?我试图$.ajax()选项converters但没有成功......

+2

我的问题,如果服务器输出的text/html那么你肯定服务器想让你送JSONP请求给它? – Ejaz 2013-05-01 16:12:14

+0

根据我的经验,“资源解释为脚本,但是以MIME类型text/html'传输”是*警告*,不是错误。如果你的代码不能正常工作,肯定还有其他的错误。 (例如,来自服务器的JSONP响应是否为有效脚本?)JSONP响应是*脚本*;它不是JSON(尽管它可能包含JSON),并且不应该使用'application/json'。 – apsillers 2013-05-01 16:14:10

+0

@apsillers:显然这是无效的。我想在插入我的代码之前甚至检查它的有效性。我只想在url的html源代码上使用一些正则表达式。 – vanna 2013-05-01 16:20:18

回答

0

我解决了使用dataFilter

$.ajax({ 
    url: 'SomeRemoteServer/SomeFile', 
    dataType: 'jsonp', 
    dataFilter: function(data) { 
     // will run ok ! 
    } 
    success: function(data) { 
     // will fail 
    }, 
    error: function(d,msg) { 
     // will result in parsing error 
    } 
}); 
相关问题