这是我在这里的第一个问题,如果我违反了规则,很抱歉。我知道这看起来是重复的,但是我在这里和网上找到的每一个答案都没有给我任何结果。
我正在为iOS、安卓和Windows开发一个基于多平台、多页面、SOAP网络服务的应用程序。iOS和安卓的一切都很好,但当移植到Windows 7/8时,我遇到了一个棘手的问题:任何对jQuery.ajax (内部和外部)和衍生产品($.load,$.get)的调用都会启动,但显然从未得到任何答复。
目前,我正在使用jQuery 2.0.2、Cordova 2.5.0和Weinre进行调试。我切断了jQuery手机,因为它生成的代码很复杂(所以对$.mobile.allowCrossDomainPages没有用处)。
这是我用于导航的内部ajax调用的代码
$("#base_page").load(
thePage,
function () {
console.log("------------ loadPage: ", thePage, " loaded");
$(document).trigger("pageload", [thePage]);
}
);
我一点也不回答这个问题。
下面是WS数据挖掘的一个外部ajax调用的代码
$.ajax({
url: soapURL,
type: "POST",
dataType: "xml",
data: createSOAPRequest(soapWS, soapParams),
contentType: "text/xml; charset='utf-8'",
beforeSend: function(xhr) {
console.log("•••••••••••••• ready to send ajax");
xhr.setRequestHeader('SOAPAction', soapURL);
},
error: function(jqXHR, textStatus, errorThrown) {
console.log("•••••••••••••• error");
navigator.notification.alert(textStatus + "\n" + errorThrown);
},
success: function(theXML) {
console.log("•••••••••••••• success");
console.log(theXML);
// .......... building-page code
}
});
这写在控制台“···准备发送ajax”那么绝对没有别的东西了。
我想我已经尝试了所有我能找到的在这里和其他来源在网上。如果我没有错过什么,我试过
但没有结果。JSONP不是一个选项,因为服务器用回调值触发一个错误。
问题是,我从未收到任何错误/成功消息(因此它不同于this),就好像没有数据从WebService中出来一样。在其他操作系统中,一切都很有魅力,所以我确信WebService调用是正确的。
作为一种不顾一切的解决方案,我已经通过XMLHttpRequest对象重写了内部调用,这部分现在可以了。但是在重写对WebService的更复杂的POST调用之前,我想知道是否有任何方法来恢复(更容易并且已经工作的) jQuery.ajax功能。
发布于 2014-01-10 00:14:03
跨域请求的选项是JSONP、CORS (通过服务器端"Access-Control-Allow-Origin: *
“头)或通过cordova的本地http请求。前两个选项要求服务器愿意与您的应用程序合作。
https://stackoverflow.com/questions/17798214
复制相似问题