Iphone $.ajax SOAP请求在Phonegap+;JQM+;IOS 6

Iphone $.ajax SOAP请求在Phonegap+;JQM+;IOS 6,iphone,ios,jquery,jquery-mobile,cordova,Iphone,Ios,Jquery,Jquery Mobile,Cordova,Ajax使用服务器上托管的WCF服务。我已经配置并允许JQM的以下标志使用跨域请求 $.support.cors = true; $.mobile.allowCrossDomainPages = true; 同样的代码也适用于Android模拟器和设备。我还允许在Phonegap for IOS应用程序的config.xml文件中使用url 我还可以在Safari和IOS emulator中浏览相同的HTML页面。在这两个网站上,服务都运行良好。当我在IOS emulator或设备中构建并运行

Ajax使用服务器上托管的WCF服务。我已经配置并允许JQM的以下标志使用跨域请求

$.support.cors = true;
$.mobile.allowCrossDomainPages = true;
同样的代码也适用于Android模拟器和设备。我还允许在Phonegap for IOS应用程序的config.xml文件中使用url

我还可以在Safari和IOS emulator中浏览相同的HTML页面。在这两个网站上,服务都运行良好。当我在IOS emulator或设备中构建并运行phonegap应用程序时,就会出现此问题。将不调用该服务,并调用$.ajax的成功回调。我在success中检查了响应,发现它返回了web服务url页面(.svc)的HTML

我使用以下代码使用$.ajax调用SVC

var soapRequest = '<?xml version="1.0" encoding="utf-8"?>'
                                    + '<soap:Envelope      xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">'
                                      + '<soap:Body>'
                                       + '<SignIn xmlns="http://tempuri.org/">'
                                          + '<UserName>' + $.trim($('#txtEmail').val()) + '</UserName>'
                                         + '<Password>' + $.trim($('#txtPassword').val()) + '</Password>'
                                         + '<DeviceDetails>' + GetDeviceInfo() + '</DeviceDetails>'
                                      + '</SignIn>'
                                     + '</soap:Body>'
                                   + '</soap:Envelope>';
            $.ajax({
                beforeSend: function (xhr) {
                    ShowLoading('Please wait...');
                    xhr.setRequestHeader("SOAPAction", "http://tempuri.org/IService/SignIn");
                }, //Show spinner
                complete: function () {
                    HideLoading();
                }, //Hide spinner
                url: "http://somedomain/service.svc",
                type: "POST",
                dataType: "xml",
                data: soapRequest,
                contentType: "text/xml; charset=\"utf-8\"",
                success: function (rcvdata, status) {
                   alert(rcvdata);  // THIS IS GIVING HTML OF SERVICE PAGE
                },
                error: function (request, status, error) {
                   alert(request + "\n" + status + "\n" + error);
                    HideLoading();
                }
            });
var soapRequest=''
+ ''
+ ''
+ ''
+'+$.trim($('#txtEmail').val())+''
+'+$.trim($('#txtPassword').val())+''
+“”+GetDeviceInfo()+“”
+ ''
+ ''
+ '';
$.ajax({
发送前:函数(xhr){
正在加载(“请稍候…”);
setRequestHeader(“SOAPAction”http://tempuri.org/IService/SignIn");
},//显示微调器
完成:函数(){
HideLoading();
},//隐藏微调器
url:“http://somedomain/service.svc",
类型:“POST”,
数据类型:“xml”,
数据:soapRequest,
contentType:“text/xml;字符集=\“utf-8\”,
成功:功能(rcvdata、状态){
警报(rcvdata);//这是提供服务页面的HTML
},
错误:功能(请求、状态、错误){
警报(请求+“\n”+状态+“\n”+错误);
HideLoading();
}
});
我还想更改AJAX的async和processdata选项的值,但它总是返回svc服务页面html。Ajax请求状态始终为200

此问题仅在Phonegap IOS应用程序中发生。当我在IOS emulator浏览器中直接打开HTML页面时,服务被成功调用,我得到了有效的SOAP响应

我正在使用Phonegap 2.8.1,并在2.9.0中进行了尝试

提前谢谢

编辑--------------


我在IIS中托管WCF服务本地环境,然后它工作正常,我从服务获得了响应。我还检查并比较了本地服务器和live server中的IIS设置。两者都是相同的

电话缺口与CORS问题无关。确保您的SOAP消息格式正确,捕获错误块中的确切错误以进行进一步调试,这也是一个重要的问题,允许在config.xml中使用web服务域,或者我已经允许在config.xml中使用web服务域,并在其中使用它。当我在safari或IOS emulator浏览器中使用HTML页面时,我还检查了格式正确的SOAP消息。