我正在尝试使用 jQuery 在 js 中调用 java 方法。正如 Fiddler 中所证明的那样,该调用实际上正在工作,但始终调用 jQuery 错误方法,我无法得到响应。不知道为什么会这样。这可能是一个跨域调用,但它实际上是成功的,我可以从 Fiddler 获得 xml 响应。我想我可能只是在 ajax 方法上有错误的标签。据我所知,我的“数据”不是一个数组或名称/值对,它只是一个发送的 xml 字符串。我错过了什么?
var jqxhr = $.ajax({
type: "POST",
url: userManagementUrl,//the js call version of this
data: '<?xml version="1.0" encoding="UTF-8"?><WebClientRequest xmlns="http://xsd.rt.state.id.us/usermanagerservice" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><requestMethodList><requestRights><userName>' + $("#loginUsername").val() + '</userName><password>' + $("#loginPassword").val() + '</password></requestRights></requestMethodList></WebClientRequest>',
//async: false,
//contentType: "text/xml",
dataType: "xml",
//crossDomain: true,
success: function (xml) {
if (xml) {
//parse through the xml response looking for status
var node = $(xml).find("result").text();
if (node) {
if (node === "success") {
boolLoggedIn = true;
$("#loginDialog").dialog("close");
}
else {
boolLoggedIn = false;
alert("login failed");
}
}
else {
console.log("could not find result node");
}
}
else {
console.log("error logging in");
}
},
error: function (jqXHR, textStatus, errorThrown) {
console.warn("error in login call");
$("#txtLoginStatus").html("<b>Login failed!</b>");
boolLoggedIn = false;
}
});
jqxhr.done(function (result) {
console.log("Logged In");
$("#loginDialog").dialog("close");
});
jqxhr.always(function (result) {
console.log("Logged In");
$("#loginDialog").dialog("close");
});
jqxhr.then(function (result) {
console.log("Logged In");
$("#loginDialog").dialog("close");
});
});