2

XML 応答を受け取る Web サービスがあります。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);
  }
});
}

これで、リクエストが成功するとメッセージが表示されますが、エラーが発生するとコンテンツが表示されなくなります。私は何を間違っていますか?

編集:コンソールに3つのパラメーターすべてを出力するようにアドバイスされたので、実際には xhr パラメーターに必要なものが含まれていることがわかりました。問題は、アラート (xhr.responseText) を作成しようとすると、アラート ウィンドウに目的のメッセージが含まれているが、div 内に同じものを表示したい場合、何も起こらず、そこに表示したいことです。 .

4

2 に答える 2

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);
  }
});
}
于 2012-12-12T14:44:36.363 に答える
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.
 }
于 2012-12-04T13:14:30.880 に答える