【发布时间】:2015-07-10 03:51:45
【问题描述】:
我在 jQuery Mobile 应用程序中有一个登录按钮。当按下登录按钮时,将使用 $.ajax() 方法调用一个肥皂服务。这适用于浏览器和安卓手机,但控件甚至不进入 iOS 设备中的 $.ajax() 内部。这是我的示例代码。
var User = $("#txtUsername").val();
var Psw = $("#txtPwd").val();
var soapMessage = '<?xml version="1.0" encoding="utf-8"?>'
+ '<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><ns0:UserLogin SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns0="urn:LoginSrvcVi"><userId xsi:type="xsd:string">'+User+'</userId><password xsi:type="xsd:string">'+Psw+'</password></ns0:UserLogin></SOAP-ENV:Body></SOAP-ENV:Envelope>';
$.ajax({
url : myLoginUrl,
type : "POST",
username : User,
password : Psw,
dataType : "xml",
data : soapMessage,
contentType : "text/xml; charset=\"utf-8\"",
success : function(data, textStatus, jqXHR) {
debugger;
$.mobile.loading('hide');
console.log("data" + data);
var x2js = new X2JS();
var test = x2js.xml2json(data);
debugger;
if (test.Envelope.Body.searchUserLoginResponse.Response.messages.item != "Data Retrived Successfully")
{
alert("Success");
}
},
error : function(jqxhr)
{
alert("Error");
}
});
注意:我尝试在 safari 中运行 SOAP url,但它只显示一个空白屏幕,没有数据。 android上的chrome显示XML结构。
需要帮助。 谢谢
【问题讨论】:
-
alert("Success");你错过了}关闭if块。 -
@Jai 这是一个复制粘贴错误,并且 if 在我的代码中已关闭。谢谢。
-
你能检查你的控制台你得到了什么错误信息吗?
-
我在浏览器或安卓手机上没有收到此错误。我仅在 iOS 设备上收到此错误。我试图给超时 50000 毫秒,然后它进入超时错误。当我尝试 async : false 时,它给了我未经授权的错误。
-
@abhhab 尝试将
xhrFields属性xhrFields: { withCredentials: true }添加到$.ajaxSettings?,可能是crossDomain: true? ;见stackoverflow.com/questions/16689496/…
标签: jquery ajax cordova jquery-mobile hybrid-mobile-app