4

jQueryに問題があり、XMLドキュメントをフェッチしようとすると#document、操作できるオブジェクトではなく、コンソールのように返されます。どうしてこれなの?

これが私のJavaScriptコードです:

$.get('/ingredients/view_xml/' + ingredientId, function(xml) {
    console.log(xml);
}, 'xml');

そしてここにXMLがあります:

<?xml version="1.0" encoding="UTF-8" ?>
<ingredient>
    <entryId>700</entryId>
    <title>GUINEA FOWL WHOLE FRESH X 1.5KG</title>
    <ingredientUnit>KG</ingredientUnit>
    <ingredientCost>5.03</ingredientCost>
</ingredient>

それが私が犯したn00bの間違いであり、今は見ることができないとしても、どんな助けでも大歓迎です!

4

2 に答える 2

3

これは意図された動作です。ドキュメントを参照してください:

dataType
デフォルト:インテリジェント推測(xml、json、script、またはhtml)

サーバーから返されると予想されるデータのタイプ。何も指定されていない場合、jQueryは応答のMIMEタイプに基づいてそれを推測しようとします(XML MIMEタイプはXMLを生成し、1.4ではJSONはJavaScriptオブジェクトを生成し、1.4ではスクリプトはスクリプトを実行します。文字列として返されます)。使用可能なタイプ(および成功コールバックへの最初の引数として渡される結果)は次のとおりです。

"xml":jQueryを介して処理できるXMLドキュメントを返します。
[...]

さらに、ドキュメントはjQuery.parseXML()を使用して解析されます。これは、ブラウザーの「ネイティブ」XML解析の単なるラッパーです。結果のドキュメントは、DOMを使用して、またはより便利なことにjQueryを使用してトラバースおよび操作できます。ドキュメントからの例:

var xml = "<rss version='2.0'><channel><title>RSS Title</title></channel></rss>",
    xmlDoc = $.parseXML( xml ),
    $xml = $( xmlDoc ),
    $title = $xml.find( "title" );

/* append "RSS Title" to #someElement */
$( "#someElement" ).append( $title.text() );
// ...
于 2012-04-17T09:42:30.713 に答える
1

これはドキュメントであるためだと思います($.parseXML()正しいヘッダーを設定している場合は、ドキュメントを返すために解析されます)。jQueryメソッドを使用する場合は、jQueryでラップする必要があります。

$.get('/ingredients/view_xml/' + ingredientId, function(xml) {
    console.log($(xml));
}, 'xml');
于 2012-04-17T09:36:23.353 に答える