Jquery 如何编写对简单web服务的跨域JSON/Ajax调用
我有一个使用此表单的web服务:Jquery 如何编写对简单web服务的跨域JSON/Ajax调用,jquery,Jquery,我有一个使用此表单的web服务: http://<remote_domain_ip>/api/v1/search/?query=the_query 视情况而定。如果您是在domaina.com上,并且您的web服务也位于同一位置,那么您可以简单地通过以下方式执行此操作: $.ajax('path-to-your-service/WebMethodName', data, function(r){ // Success callback, you have your answ
http://<remote_domain_ip>/api/v1/search/?query=the_query
视情况而定。如果您是在domain
a.com
上,并且您的web服务也位于同一位置,那么您可以简单地通过以下方式执行此操作:
$.ajax('path-to-your-service/WebMethodName', data, function(r){
// Success callback, you have your answer in r.d object
}, function(e){
// Error callback
});
callback({
a: a1,
b: b1,
c: c1
});
但是,如果您在sayb.com
上,并且web服务位于a.com
,那么您将受到一个称为的概念的限制。换句话说,除非遵循某些规则,否则不能使用AJAX调用(或XMLHttpRequest)从该web服务获取数据。一种是使用HTTP头字段,这有一些跨浏览器的问题。另一种方法是使用,这需要服务器支持它
要使用JSONP,应该使用jQuery的$.getJSON()
方法,并在通过HTTP GET发送的参数旁边提供回调查询字符串键
$.getJSON('path-to-your-service?x=some&y=thing?callback?', function(r){
// Success callback. Your JSON object would be the r parameter
});
如果您是web服务的创建者,我建议您使用JSONP,如果您使用.NET framework,我还建议您只使用通用处理程序而不是web服务,因为我们在配置web服务时遇到很多问题。但是,在服务器代码中,您应该检查传入的GET请求,以获得一个名为callback的查询字符串键,如果它存在,您应该用以下方式将返回的JSON封装在函数中:
$.ajax('path-to-your-service/WebMethodName', data, function(r){
// Success callback, you have your answer in r.d object
}, function(e){
// Error callback
});
callback({
a: a1,
b: b1,
c: c1
});
理解JSONP(概念及其发生方式)非常关键。如果没有深入的了解,您未来的维护将是一个巨大的负担。我建议你们读一读这个问题。你们不能,假设你们所在的领域不同。如果您有权访问远程\u域\u ip,或者可以让他们为您托管文件,则可以使用。您可以尝试使用类似的涉及Flash的工作环境工具。否则,您将需要在后端执行请求