2009-06-19 38 views
3

皆さん、私はJavaScriptを学んでいるだけです。質問があります。誰かが答えてくれることを願っています。サーバーからHTMLファイルではなくXMLファイルを取得し、クライアント側のJavaScriptで特定の部分を追加/削除/編集し、サーバーに保存して保存することは可能ですか? JSONや他のマークアップ/データ交換フォーマットも機能します。JavaScriptを使用してXMLファイルを編集しますか?

+0

サーバーサイド言語(PHP、.NETなど)でサーバーに保存する予定ですか?または、あなたはjavascriptを使ってサーバーに保存できるかどうかを尋ねていますか? –

+0

JavaScriptでサーバーに保存することは可能ですか? いずれにしても、私はCGIを使用する予定です。 – Skofo

+0

Javascriptはクライアントサイドの言語です。しかし、XmlHttpRequestを使用して、ローカルに保存するロジックを含むCGIスクリプトへのプログラムによるPOSTを行うことができます。 –

答えて

3

はい。 jQueryを使用...

$.get("myGetUrl.php", function(data) { 
    var xml = $(data); 

    xml.find("myNode").text("newValue"); 

    $.post("myPostUrl.php", xml, function(resp) { 
    alert(resp); 
    }, "xml"); 
}); 
0

はい、可能です。 "XML DOM"を検索して、クライアント上で簡単に編集できます。

0

はい。 AJAXを介してXML文書を読んだり、HTMLと同じようにDOMをトラバースすることができます。 jQueryのようなフレームワークを使用すると、さらに簡単になります。

0

確かに。 XMLHttpRequestオブジェクトを使用してファイルの要求を行い、データに必要な操作を行い、別のXMLHttpRequestを使用して文書全体を返送することができます。 XMLでこれを行うことができます(おそらく元の文書をダウンロードするのが最も簡単です)が、おそらくJSONを使ってサーバーにポストバックするのが最も簡単です。

投稿されたデータを受け取ったり、必要に応じてフォーマットしたり(つまり、JSONをXML文書に変換する)、サーバー側のスクリプト(PHP、ASP、Rubyなど)が必要になります。データベース。

この質問はまだ具体的な実装にはあまりにも一般的ですが、これらの手順で追加のヘルプが必要な場合は、尋ねてください。

+0

XMLHttprequestオブジェクトはXML DOMDocumentが "send()"メソッドの引数として提供されていることをサポートしており、正しくシリアル化してサーバーに送信するためにJSONについては何の注意もありません。変更されたDOMDocumentを送信してください。 – NickFitz

+0

確かに、DOMDocumentに変更を加える方が簡単か、JSONのデータに直接変更するかによって異なります。同様に、返されたデータをPHPのXMLよりもJSONで処理する方が簡単かもしれませんが、サーバーサイドで何か処理を行う必要があるかどうか、どのように格納するかによって異なります。つまり、新しいXMLファイルにXMLを正確に保存するだけであれば、DOMDocumentでXMLHttpRequest send()関数を使用するだけで、JSONを気にしないでください。 – defines

0

確かに。 XMLHttpRequestを使用して、サーバーがtext/xml MIMEタイプを使用してXML文書を処理する場合、XML文書をフェッチすることができます。 responseTextプロパティはXMLテキストを提供しますが、ブラウザはXMLを解析してresponseXMLにDOMツリーを提供します。そのDOMを変更してから、シリアル化してサーバーに送り返すことができます。

JSONも同様に使用できます。 XMLHttpRequestを使用してサーバーからデータを取得し、次にjsonData = eval(xhr.responseText)を使用してJSONデータをJavaScriptオブジェクトに変換します。

すべての主要なJavaScriptライブラリには、これらのメソッドのいずれかを実行するのに役立つモジュール/関数があります。 XMLとJSONは、Ajaxアプリケーションで最も一般的なデータ交換方法の2つです。

+0

XML DOMDocumentをシリアル化する必要はありません。 "send()"メソッドの引数として渡すだけで、ブラウザがそれを処理します。 – NickFitz

関連する問題