1

このようなASP.NET Webサービスと通信するjquery関数があります

$(document).ready(function() {
                         $.support.cors = true;
             $.ajax({
                 type: "GET",
                 url: "http://www.webservice.com/blahblah.asmx/blahb123",
                 data: "tnWsGuid=TEST1",
                 dataType: "text",
                 success: function(data, status, jqxhr) {
                     xmlString = data;
                     alert(xmlString);
                 },
                 error: function (request, status, error) {
                     alert(status);
                 }

                });
        });

アラート表示はこれ:

<?xml version="1.0" encoding = "utf-8"?>
<string xmlns = "http://Walkthrough/XmlWebServices/">
{"approverName":"","emailAddress":"","companyName":"ABC","address":{"streetAddress1":"12 BlahBlah","streetAddress2":"","state":"ON","zipCode":"","country":"SO","phoneNumber":""},"tabledata:"[{"vendorPart":"AAAAA","partDescription":"N/A","price":"0.00","quantity":"28"},{"vendorPart":"BBBBBBB","partDescription":"N/A","price":"0.00","quantity":"3"},{"vendorPart":"CCCCCC","partDescription":"N/A","price":"0.00","quantity":"25"}]}
</string>

私のdataTypeはテキストになりました。JSON を解析する方法はわかっていますが、XML エンベロープに埋め込まれた JSON に何らかの方法でアクセスし、それを JSON オブジェクトに変換して、JQuery を使用して解析できるようにする必要があります。

$.ajax 関数で試したことは次のとおりです。

success: function(data, status, jqxhr) {
                     xmlString = data;
                     var jsondata = jQuery.parseJSON(xmlString.substr(xmlString.indexOf('{')));
                     alert(jsondata);
                 }

しかし、IEデバッガーでは次のように見える無効な文字のエラーが返されました

xml エンベロープ内のデータにアクセスして JSON オブジェクトに変換し、JSON として解析できるようにする方法はありますか? 私には Web サービスを変更する機能がないため、これはすべて Web ページ内で行う必要があります。

4

3 に答える 3

1

dataType:"xml"呼び出しは xml を返すため、「テキスト」の代わりに使用できます。

その後、xml 応答を処理できます。

var jsonData=$.parseJSON(data.find("string").text());
于 2013-04-17T15:49:54.690 に答える
1

あなたの部分文字列は、JSON データに終了タグを追加していると思います。どうですか:

xmlString = $.parseXML(xmlString);
var jsondata = $.parseJSON($(xmlString).children('string').text());
于 2013-04-17T15:37:08.473 に答える