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 上试试你的代码吗system.webServer> 出现错误:“NetworkError: 405 Method Not Allowed - lonestarus.com/AndroidApp/AndroidLocation.svc/RestService/…” 为什么我们需要在那里使用jsonp?您能否编辑您的答案并粘贴 jsfiddle 代码,以便我可以正确接受您的答案。 让我们continue this discussion in chat

以上是关于Jquery 无法从 WCF REST 服务获得响应的主要内容,如果未能解决你的问题,请参考以下文章

从 jquery 调用 wcf rest 服务不起作用

WCF REST 服务返回 405:jQuery AJAX GET 不允许的方法

将 JSON 数据从 JQuery 发送到 WCF REST 方法时出现问题

WCF REST用jquery下载pdf

使用 jQuery/Ajax 从 JavaScript 调用 WCF/JSON/REST WebService

无法通过 HTTPS 显示 WCF REST 帮助页面