带有WCF休息服务的PhoneGap

时间:2012-06-26 22:26:49

标签: wcf jquery cordova wcf-rest

所以我已经开始使用PhoneGap / Cordova(Windows Phone)和WCF Rest服务,但是,我在让模拟器与WCF服务进行交互方面遇到了问题。

起初我以为可能是仿真器无法连接到localhost 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服务方法,但是它会继续输入失败函数,而不是显示错误消息“未定义”。

我在这里错过了哪些东西?

1 个答案:

答案 0 :(得分:1)

经过进一步调查后,使用以下行解决了这个问题:

jQuery.support.cors = true;

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

  如果浏览器可以创建XMLHttpRequest对象并且该XMLHttpRequest对象具有withCredentials属性,则

cors等于true。要在不支持cors但允许跨域XHR请求(Windows小工具等)的环境中启用跨域请求,请设置$ .support.cors = true;。 CORS WD