所以我已经开始使用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服务方法,但是它会继续输入失败函数,而不是显示错误消息“未定义”。
我在这里错过了哪些东西?
答案 0 :(得分:1)
经过进一步调查后,使用以下行解决了这个问题:
jQuery.support.cors = true;
对于那些有相同问题的人来说,jQuery库只是一个小小的引用,这就是上面这行:
如果浏览器可以创建XMLHttpRequest对象并且该XMLHttpRequest对象具有withCredentials属性,则cors等于true。要在不支持cors但允许跨域XHR请求(Windows小工具等)的环境中启用跨域请求,请设置$ .support.cors = true;。 CORS WD