PhoneGap with WCF Rest Service



所以我从PhoneGap/Cordova(Windows Phone)和WCF Rest Services开始,但是,我在让模拟器与WCF服务交互时遇到了问题。

起初我在想模拟器可能无法连接到本地主机 WCF 服务,所以我在外部主机上发布了 WCF 服务,但问题仍然发生......即仍然无法调用 WCF 服务。

我拥有的代码如下所示:

PhoneGap 应用程序的 javascript 文件如下:

function getAjax() {
var jqxhr = $.ajax({
    url: 'http://link.to.service.com/service1/',
    //headers:
    beforeSend: function (xhr) {
        //xhr.overrideMimeType('text/plain; charset=x-user-defined');
    },
    dataType: 'json'
})
.done(function (data) {
    var element = document.getElementById('ajaxCall');
    element.innerHTML = JSON.stringify(data, null, "t");
})
 .fail(function (xhr, status, error) {
     showError(error);
 })
 .always(function () { showAlert("complete"); });

}

然后 WCF 服务包含以下方法:

 [WebGet(UriTemplate = "")]
    public List<SampleItem> GetCollection()
    {
        return new List<SampleItem>()
                   {
                       new SampleItem()
                       {
                           Id = 1,
                           StringValue = "Hello" }
                   };
    }

因此,当对javascript方法"getAjax"的调用完成时,应该调用WCF Service方法,但它会不断进入失败函数,而不是显示错误消息"undefined"。

我在这里错过了什么吗?

经过进一步调查,此问题已使用以下行解决:

jQuery.support.cors = true;

对于那些有相同问题的人,只是jQuery库中的一小段引用,这就是上面一行的作用:

如果浏览器可以创建 XMLHttpRequest 对象,并且该 XMLHttpRequest 对象具有 withCredentials 属性,则 cors 等于 true。要在尚不支持 cors 但允许跨域 XHR 请求(Windows 小工具等)的环境中启用跨域请求,请设置 $.support.cors = true;。科尔斯WD

最新更新