Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
windows phone 7-phonegap停止jquery.ajax_Jquery_Ajax_Windows Phone 7_Cordova_Cors - Fatal编程技术网

windows phone 7-phonegap停止jquery.ajax

windows phone 7-phonegap停止jquery.ajax,jquery,ajax,windows-phone-7,cordova,cors,Jquery,Ajax,Windows Phone 7,Cordova,Cors,这是我在这里的第一个问题,如果我违反了一些规则,很抱歉。我知道这似乎是重复的,但我在这里和网上找到的每一个答案都没有给我任何结果 我正在为iOS、Android和Windows Phone开发一个多平台、多页面、基于SOAP-XML web服务的应用程序。iOS和Android一切正常,但当移植到WindowsPhone7/8时,我遇到了一个棘手的问题:任何对jQuery.ajax(内部和外部)和衍生品($.load,$.get)的调用都会启动,但显然从未收到响应 目前,我正在使用jQuery

这是我在这里的第一个问题,如果我违反了一些规则,很抱歉。我知道这似乎是重复的,但我在这里和网上找到的每一个答案都没有给我任何结果

我正在为iOS、Android和Windows Phone开发一个多平台、多页面、基于SOAP-XML web服务的应用程序。iOS和Android一切正常,但当移植到WindowsPhone7/8时,我遇到了一个棘手的问题:任何对jQuery.ajax(内部和外部)和衍生品($.load,$.get)的调用都会启动,但显然从未收到响应

目前,我正在使用jQuery 2.0.2、Cordova 2.5.0和Weinre进行调试。由于jQueryMobile生成的代码非常复杂(因此,$.mobile.allowCrossDomainPages没有任何用处),因此我中断了jQueryMobile

这是我的一个用于导航的内部ajax调用代码

$("#base_page").load(
    thePage,
    function () {
        console.log("------------ loadPage: ", thePage, " loaded");
        $(document).trigger("pageload", [thePage]);
    }
);
这根本没有给我答案

下面是WS-data mining的一个外部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”,然后就再也没有了

我想我已经尝试了所有我能在这里找到的和在网络上的其他来源。如果我没有错过什么,我试过了

  • $.support.cors=自或起为真
  • cache:false、crossDomain:true、xhrFields:{withCredentials:true}的任意组合
  • 从开始停用Cordova代码的win.XMLHttpRequest部分
  • 每个本地url描述,绝对或相对、简单(仅页面)或完整路径(从/www或/app/www开始,甚至是完整的Dool MS协议)
  • URI在config.xml中被列为白名单
但是没有用。JSONP不是一个选项,因为服务器使用回调值触发错误

问题是我从未收到任何错误/成功消息(因此它不同于),就好像没有数据从Web服务中出来一样。在另一个操作系统中,一切都很正常,所以我相信WebService调用是正确的


作为一个不顾一切的解决方案,我已经设法通过XMLHttpRequest对象重写了内部调用,这一部分现在已经好了。但是在重写对WebService更复杂的POST调用之前,我想知道是否有任何方法可以恢复jQuery.ajax的功能(更简单且已经工作)。

跨域请求的选项是JSONP、CORS(通过服务器端“
访问控制允许来源:
”头,或通过cordova的本机http请求。前两个选项要求服务器愿意与您的应用程序合作