我有一个Web服务,我从中接收XML响应。在jQuery中,我有以下内容,以获取某本书:
function getBookByIsbn() {
if($("#getAndDeleteIsbn").val() == '')
{
alert("Please provide the ISBN");
return false;
}
$.ajax({
dataType: 'xml',
type: 'GET',
url: 'http://localhost:8080/library/books/' + $("#getAndDeleteIsbn").val(),
success: function (data) {
var string;
if (window.ActiveXObject){
string = data.xml;
}
else
{
string = (new XMLSerializer()).serializeToString(data);
}
$("#messageBox").text(string);
},
error: function (xhr, status, thrownError) {
var string;
if (window.ActiveXObject){
string = thrownError.xml;
}
else
{
string = (new XMLSerializer()).serializeToString(thrownError);
}
$("#messageBox").text(string);
}
});
}
现在,当请求成功时,将显示该消息,但是当我收到错误时,将不会显示该内容。我做错了什么?
编辑:有人建议我在控制台中打印所有三个参数,所以我发现实际上xhr参数包含了我需要的内容。 现在的问题是,如果我尝试创建警报(xhr.responseText),警报窗口包含所需的消息,但如果我想在div中显示相同的内容,则没有任何反应,我希望它在那里显示。答案 0 :(得分:2)
问题是我尝试将字符串序列化为字符串,因为xhr.responseText是一个字符串。要解决这个问题,而不是xhr.responseText,它应该是xhr.responseXML。 这是代码:
function getBookByIsbn() {
if($("#getAndDeleteIsbn").val() == '')
{
alert("Please provide the ISBN");
return false;
}
$.ajax({
dataType: 'xml',
type: 'GET',
url: 'http://localhost:8080/library/books/' + $("#getAndDeleteIsbn").val(),
success: function (data) {
var string;
if (window.ActiveXObject){
string = data.xml;
}
else
{
string = (new XMLSerializer()).serializeToString(data);
}
$("#messageBox").text(string);
},
error: function (xhr, status, thrownError) {
var string;
if (window.ActiveXObject){
string = xhr.responseXML.xml;
}
else
{
string = (new XMLSerializer()).serializeToString(xhr.responseXML);
}
$("#messageBox").text(string);
}
});
}
答案 1 :(得分:0)
服务器并从服务器获得响应我也得到了相同的东西。你只需要检查它的错误或响应。为此你可以使用javascript xquery或者使用它。
//suppose you get response in variable 'xml_response'.
var res = xml_response.getElementByTagName('errorMessage');
//if result exist then it is error other wise it is not error.
if ( res[0] ){
alert ( 'error occur on server side. ');
return;
}else{
//show you record in div.
}