0

PHP

echo '<data><![CDATA[ [{"x":0,"y":0,"src":"images/image.jpg"}]  ]]></data>';

JS

$.post( 'getData.php', {}, _onResult );

_onResult = function( result)
{
    console.log(result); 
}

上記の console.log 出力:

(ローカルホストで WAMP を使用):

<data><![CDATA[ [{"x":0,"y":0,"src":"images/image.jpg/"}]  ]]></data>

(Web ホスティングでは、LINUX を使用):

<data><![CDATA[ [{"/x/":0,/"y/":0,/"src/":/"images/image.jpg/"}]  ]]></data>    

2番目のケースで同じ出力を得るにはどうすればよいですか?

また

2 番目の出力を $.parseJSON で解析できるように変換できますか?

4

2 に答える 2

0

問題は、ブラウザ、または HTTP サーバーが XML データを読み取り、セキュリティ上の理由により JSON オブジェクトに自動的に解析しないことにある可能性があります。理由が何であれ、この行は (自動変換を想定して) 失敗します:

 var json = $(dataXML).find('data').text();

代わりに、次のように変更します。

 var json = $.parseJSON($(dataXML).find('data').text()); // i think you can use $.parse() too.

この問題は、以前に両方のプラットフォームでさまざまな場面で数回発生しましたが、安定しているとは思いません。ただし、ブラウザー (または JS インタープリター) がそれが実際に JSON オブジェクト (その XML 内) であることを「検出」できる方法はないため、自分のもののタイプ セーフを確立したい場合は、明示的にそのように定義する必要があります。 (これは良いプログラミング方法です)。

PS: "localhost" はセキュリティに関して非常に柔軟なので、あまり依存しないことをお勧めします :)

于 2013-02-28T06:15:20.630 に答える
0

スクリプトに問題はありません..

var xml = "<data>\
        <![CDATA[ [{\"x\":0,\"y\":0,\"src\":\"images/image.jpg\"}]  ]]>\
    </data>";
var dataXML = $.parseXML(xml);
var json = $(dataXML).find('data').text();

console.log(json); // outputs [{"x":0,"y":0,"src":"images/image.jpg"}]

この行にもエラーはありません

var json = JSON.parse(json);
于 2013-02-28T05:05:21.037 に答える