AjaxのjQueryサンプルページでこの例を見ました。
var xmlDocument = [create xml document];
$.ajax({
url: "page.php",
processData: false,
data: xmlDocument,
success: someFunction
});
次のような文字列を取得するにはどうすればよいですか。
var t = '<foo><bar>something</bar></foo>';
それをXML DOMオブジェクトに変換しますか?クロスブラウザ?
[〜#〜] update [〜#〜]:karim79の回答へのコメントを参照してください。
それをjQueryオブジェクトでラップします。次に、jQueryの通常のDOM操作メソッドを使用します。
var t = $('<foo><bar>something</bar></foo>');
//loop over 'bar' nodes
t.find('bar').each(function () {
alert($(this).text());
});
それをプレーンな文字列に変換したい場合(たとえば、変更した後)、次のように実行できます。
//then convert it back to a string
//for IE
if (window.ActiveXObject) {
var str = t.xml;
alert(str);
}
// code for Mozilla, Firefox, Opera, etc.
else {
var str = (new XMLSerializer()).serializeToString(t);
alert(str);
}
編集: $。ajaxマニュアルによると (processDataオプション):
デフォルトでは、データオプションにオブジェクトとして渡されたデータ(技術的には文字列以外のもの)が処理され、クエリ文字列に変換され、デフォルトのコンテンツタイプ「application/x-www-form-urlencoded」に適合します。 。 DOMDocumentsまたはその他の未処理データを送信する場合は、このオプションをfalseに設定します。
したがって、jQueryオブジェクトをサーバーに渡す場合は、jQueryオブジェクトをtrueに設定するか、完全に省略する必要があります(これはtrueデフォルトで)。お役に立てば幸いです。
Findを呼び出すだけです-トップレベルの要素の場合は、代わりにフィルターを使用する必要があります。
var t = $('<foo><bar>something</bar></foo>');
//loop over 'foo' nodes
t.filter('foo').each(function () {
alert($(this).find('bar').text());
});
JQueryがなくても変換を実行できます。これはMozillaの DOMParser Documentation から取得されます:
// Create a DOMParser
var parser = new DOMParser();
// Use it to turn your xmlString into an XMLDocument
var xmlDoc = parser.parseFromString(xmlString, "application/xml");
この単純なコードを使用して、xmlタグをテキストに変換できます
var temp_var = $("<p/>").append($(your_xml_data)).htML()
堅実なコード。すべてのブラウザで完全に動作します。
var xmlFields = $("<root><reports name='report 1'><item
field='ord_num' desc='Order Number'/></reports></root>");
alert(xmlFields[0].outerHTML);