2017-01-13 15 views
0

だから私は現在、次のコードを持っている:解析用XML

<script> 
    var params = {}; 
    var results = ''; 
    params["companyID"] = <%=company.getId()%> 
    $.ajax({ 
     url: "services/contacts/<%=ContactServices.Action.GET_CONTACT_LIST%>", 
     data: params, 
     complete: function(xhr) { 
      results = xhr; 
      console.log(results); 
      var booboo = $.parseXML(results); 
      console.log(booboo); 
     } 
    }); 
</script> 

をし、リターンは、以下のresponseText結果に戻る:私は現在、intrestedています

"<?xml version="1.0" encoding="ISO-8859-1"?><Response>[Fara Hussain, 
Default Contact, Gogo Hussain, Emma Lowdon, John 
Stewart]<Success/></Response>" 

を括弧内の項目:

ファラフセイン、デフォルト連絡先、Gogo Hussain、Emma Lowdon、John Stewart

次に、XMLの解析を試みます。しかし、私はXMLを解析しようとすると、nullを返します。

var booboo = $.parseXML(results); 
console.log(booboo); 

これを解決する方法はありますか?

答えて

0

jqXHRはサーバーからの応答ではありません。 ajaxオブジェクトではなくレスポンスを解析する必要があります。

complete: function(xhr) { 
     results = xhr.responseXML || xhr.responseText; 
     console.log(results); 
     var booboo = $.parseXML(results); 
     console.log(booboo); 
    } 

ここだけの括弧内のものを得るために巧妙なトリックです:

var results = "<Response>[Mubean Hussain, Default Contact, Mubean Hussain, Emma Harding, John Stewart]<Success/></Response>"; 
 
var text = $("<div>").html(results).text(); 
 
// text will now contain just the stuff in the brackets 
 
console.log(text);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

これはDOMに追加されていないダミーのdivを作成することによって動作しますxmlをhtmlとして挿入して、マークアップを無視するdivのtextContentを取得します。

+0

これはやや良いですが、括弧内の値だけを返す方法があります。現時点では、次のように表示されます: –

+0

[Mubean fsa、デフォルト連絡先、Mubean fs、Emma da、John Stewart]

+0

@SammySung - 私の編集を参照してください。 –