Jquery 无法从 WCF REST 服务获得响应
Posted
技术标签:
【中文标题】Jquery 无法从 WCF REST 服务获得响应【英文标题】:Jquery unable to get the response from WCF REST service 【发布时间】:2012-12-13 23:30:46 【问题描述】:我开发了 WCF REST 服务并将其部署在可以通过浏览器访问的链接上,因为它的操作是“GET”。
我想使用 jQuery 获取该数据。我尽力让 WCf 使用 jQuery 获得响应 但徒劳无功。我还尝试了 $.Ajax 和 'jsonp',但没有成功。谁能帮帮我?
网址是:http://www.lonestarus.com/androidApp/AndroidLocation.svc/RestService/getLatestLocation
您可以通过在浏览器中粘贴 url 来检查该 url 响应。
【问题讨论】:
【参考方案1】:我不能做一个跨域的例子给你看,但是
$('#a').load('http://www.lonestarus.com/AndroidApp/AndroidLocation.svc/RestService/getLatestLocation?callback=run');
如果这些东西已经设置好了。
您的服务需要启用 JSONP 回调或设置 Access-Control-Allow-Origin
标头以使跨域请求正常工作,或者您需要从同一域运行脚本。鉴于您的网址显示 AndroidApp 我认为您想要跨域。
【讨论】:
注意:将Access-Control-Allow-Origin
设置为*
将允许来自任何来源的请求。【参考方案2】:
示例代码如下:
$.ajax
(
type: 'GET',
url: http://www.lonestarus.com/AndroidApp/AndroidLocation.svc/RestService/getLatestLocation,
cache: false,
async: true,
dataType: 'json',
success: function (response, type, xhr)
window.alert(response);
,
error: function (xhr)
window.alert('error: ' + xhr.statusText);
);
【讨论】:
我继续修改它。虽然,我确实需要它在我的应用程序中是真实的,所以这真的取决于你真正需要什么。 我只需要在successfunction里面输入数据。并且您的代码无法正常工作,并给出错误“错误无传输”【参考方案3】:您需要在响应标头中将 Access-Control-Allow-Origin 设置为值 [*]。
this blog 提供了更多详细信息如何在 WCF REST 服务中完成
如果您要在 Web API 中执行此操作,您可以添加
Response.Headers.Add("Access-Control-Allow-Origin", "*")
使用小提琴调用服务
$(function()
$.ajax(
url: "http://www.lonestarus.com/AndroidApp/AndroidLocation.svc/RestService/getLatestLocation",
datatype: 'json',
type : 'get',
success: function(data)
debugger;
var obj = data;
);
);
我收到了错误
XMLHttpRequest 无法加载 http://www.lonestarus.com/AndroidApp/AndroidLocation.svc/RestService/getLatestLocation。 来源http://fiddle.jshell.net 不允许 访问控制允许来源。
【讨论】:
我需要在哪里添加访问控制或者你能告诉我 通过这种方式,我在 w.cf 的 web.config 中添加了访问控制允许 orign。现在你能在 iE以上是关于Jquery 无法从 WCF REST 服务获得响应的主要内容,如果未能解决你的问题,请参考以下文章
WCF REST 服务返回 405:jQuery AJAX GET 不允许的方法
将 JSON 数据从 JQuery 发送到 WCF REST 方法时出现问题