• ベストアンサー

AjaxとDOMの違いを理解できません。

zxcv0000の回答

  • zxcv0000
  • ベストアンサー率56% (111/196)
回答No.1

「Ajax と DOM は比較すべきものではなく協調させるべきもの」という話題は先日もでていましたね。 世間で「Ajaxライブラリ」と呼ばれるものには内部で Ajax と DOM の両方を使っているものが多いのが、誤解される原因でしょうか。 Ajax の本質は、JavaScript からサーバーに HTTP アクセスする事だと思います。 サーバーからレスポンスが返った時にそれをまたJavaScriptで受けて必要があれば DOM を使って画面を書き換える訳です。 Ajax以前の技術でも JavaScript は submit の発行等で サーバーにアクセス要求を発行できますが、サーバーからのレスポンスはブラウザが受けて画面書き換えをするだけです。 レスポンスをブラウザでなくJavaScriptで受けるのが Ajax の特徴です。 で、その特徴を備えたものが全て Ajax かというと、そうとは限らないでしょう。 Ajax で定義されたクラス(オブジェクト)を使用して HTTPアクセスを実現しているものだけが Ajax (を使ったJavaScript/ライブラリ)と言えるでしょう。 1 YahooやGoogleのAPIサービスやガジェット すみません。 私はその中身を知らないので、Ajaxに分類すべきかどうかわからないです。 2 2. 'href="​http://....'​でブロック要素のTAGに外部ファイルを取り込 み... リクエストの発行にAjaxクラスを使用してないんですよね? 「レスポンスを受けてDOMを書き換える」という作業はブラウザがやってるんですよね? だったら、Ajax とは呼べません。 3 取り込んだ内容によると思いますが。

yyr446
質問者

お礼

感謝

yyr446
質問者

補足

なるほど、外部サーバーにアクセスして、動的に内容を書き換えるもの全て をAJAXとはいえないのですね。 確かに、サーバーサイトで、ページを書換えて返すPHPやJAVAサーブレット はAJAXが流行りだす前からありました。

関連するQ&A

  • DOMは、javascriptではないのでしょうか

    ある要素にアクセスする場合、 例えば、 document.form1.hoge;てしたり、 document.getElementsByName('hoge');てしたり、 jQueryを使ったりする方法があるかと思うのですが、 このgetElementsByName()メソッドは、 javascriptではないのでしょうか? 調べると、 DOMのAPIとかって、書いてあるのですが、 XMLとか、JSONみたいな、単なる仕様なのでしょうか? そうすると、PHPとかでも、getElementsByNameは使えるのでしょうか? あるいは、javascriptに特化したメソッドなのでしょうか? javascriptを書くとき、 書き方が色々あるので、 どれを選択すればよいかいつも迷うのですが、 DOMを使ってできる処理は、 一般的には、DOMで書くのでしょうか? DOMのデメリットとしては、 古いブラウザが対応してない、ぐらいしか思い浮かばないのですが、 DOMとjavascriptは対等な関係で、 使わなくてもいいけど、 使ったほうが便利、みたいな認識でいいのでしょうか? DOMでしかできない処理みたいなのはあるのでしょうか?

  • Ajaxの質問です。

    Jquery php mysqlを利用したAjaxの質問です。 http://webcake.no003.info/webdesign/jquery-ajax-php-json-sample.html 上記サイトを参考にしています。 データをpostで渡していると思うのですが、 上記サイトですと、 クロスサイトフォージェリ対策はどの様に書いたらよいでしょうか? Jqueryのクロスサイトフォージェリ対策のよい情報がなかなか見つかりません。 PHPのみですと、postで渡すリファラー、トークン照合などあると思うのですが、 Jqueryでリファラーチェック、トークン作成、などはどう書くのでしょうか? 教えてください。

  • 疑問だが、Ajaxは仕事でも使えるでしょうか?

    AjaxにjQueryなどのフレームワークがありますが、もしかしてAjaxは基幹システムとか大抵のサイトでは実用的ではないでしょうか? もしかして、個人的な遊びやWebデザインで面白い表現に使われるなどしか使われないでしょうか? Ajaxを使っている大手サイトであるGoogleやyahoo!を除いて、日本のIT企業のほとんどはWebサービスを提供するのに、Ajaxは使わないでしょうか?むしろ、シームレスで動的なサイトを作るとしたらDOMの方が多いような気がしますが、どうでしょうか? 私は個人的にAjaxは技術が新しいものがどんどん出てきて、ある意味追いついていけないと思う。ライブラリも多すぎて、さっぱり分からない。極端な話だと、Ajaxは仕事にならないなんていうことはあり得るでしょうか?むしろDOMの方が技術が安定して、その方が仕事になりやすいとか…。 変な質問ですみませんが、答えられる方はご回答よろしくお願いします。

    • ベストアンサー
    • AJAX
  • JQueryはAJAXとは無関係??

    質問◆JQueryおよびJQueryMobileは「AJAX」とは無関係なのでしょうか? 「JQueryMobileを使っているとき、DOMによってHTMLを動的に差し替えている」という認識なのですが、 特にRequest関連の記載をJavaScriptで記載していない限り、AJAXの処理は行われないのでしょうか? それとも、 JQuery Mobileを使っている場合は、ページ遷移などで、プログラマが意識していなくても(独自にプログラムを書いていなくても) AJAXの処理が行われているのでしょうか? /************************************/ サーバへのリクエストはなくても、1つのマシン内の、HTMLファイルとHTMLファイルの間で、 HTTPで通信がされるということはないと思っています。 (※基本、HTTPはクライアントとサーバの間のときしか使われないのですよね?) JQueryの技術情報のサイトを見ていると、 よく「document.ready」と書かれていたりするソースを見かけますが、 これはAjaxとは関係なく(通信とは関係なく)、 また「xhr.send」も書かれていないHTMLは、AJAXは使われないという理解です。 (「Form、submit」とも関係がない) XMLHttpRequestも「HttpRequest」とあるわけですし、 「Form、submit」を書いているときに行われるわけではないけれども、かわりに、 「xhr.send」とJavaScriptで実行されたタイミングで走る処理であり、 その際、「サーバから返される情報がXMLのデータ形式で(XML以外もですが、、)」だという理解なのですが、合っていますでしょうか?

    • ベストアンサー
    • AJAX
  • Ajaxのエンコードで

    私はshift_JISで作成したCGIのページがあるのですが、 Ajaxを導入しようとしたときに、Ajaxというか Javascriptでは、utf-8しか認識しないととあるサイトに書いてあったのですが、 そのCGIのページをphpに変更するにはものすごく多大な時間が 必要になってしまうんですが、CGIをutf-8仕様にするのも大変です AjaxでShift_JISに変換するような事はできませんでしょうか? http://javascriptist.net/ref_prototype/ajax.periodicalupdater.html のサイトに乗っている <script type="text/javascript" src="/js/prototype.js"></script> <script type="text/javascript"> var myajax; function execute() { myajax = new Ajax.PeriodicalUpdater( "container", "./member.cgi", { "method": "get", "parameters": "id=$id", frequency: 5, // 5秒ごとに実行 onSuccess: function(request) { // 成功時の処理を記述 // alert('成功しました'); // jsonの値を処理する場合↓↓ // var json; // eval("json="+request.responseText); // ↓IEでもキャッシュを読み込まずに毎回リモート接続を実行するためのコード(パラメータの書き換え) var str = myajax.options.parameters; var hash = str.parseQuery(); hash["ajax_request_id"] = Math.random(); hash = $H(hash); myajax.options.parameters = hash.toQueryString(); }, onComplete: function(request) { // 完了時の処理を記述 // alert('読み込みが完了しました'); // jsonの値を処理する場合↓↓ // var json; // eval("json="+request.responseText); }, onFailure: function(request) { alert('読み込みに失敗しました'); }, onException: function (request) { alert('読み込み中にエラーが発生しました'); } } ); } </script> を使用して自動更新をしようと思っているのですが

  • jquery,ajaxによるphp通信でnull

    初めまして。 現在jqueryを勉強中の学生です。 いろいろなサイトを参考にしつつ、試しににjquery・ajaxを使ったphpとの通信を試みているのですが、文字列のやりとりがうまくいきません。 数字ではうまくいくのですが、文字になるとalertの部分でnullと返されてしまいます。 アドバイス等頂ければと思います。 よろしくお願いいたします。 以下部分的ではありますがコードを示します。 (jqueryはjquery-1.11.1.min.jsを使用) [js] $.ajax({ type: "POST", url: "step1.php", data: send_data, success: function(receive_data) { var parseAr = JSON.parse(receive_data); alert(parseAr[0]['name']); }, error: function(XMLHttpRequest, textStatus, errorThrown) {alert('Error: ' + errorThrown); } }); return false; [php側] <?php if(isset($_POST['name'])) { $result = array(); $result[] = array('name'=>'織田', 'age'=>'33'); $result[] = array('name'=>'織田', 'age'=>'33'); echo json_encode($result); } else { echo json_encode('The parameter of "name" is not found.'); } exit; ?>

  • JQueryでAjax通信をキャンセルした時につて

    JQueryでAjax通信時に、abort()でキャンセルを行うと通信はキャンセルになっているようですが、 サーバー側(Ajaxで呼ばれた処理)は、最後まで処理されてしまいます。 abort()を実行させた時に、サーバー側の処理まで中断させる方法はありますでしょうか? 実行と中止は以下のような感じで書いています。 Ajax実行 arrXhr = $.ajax({ dataType: "json", type: "POST", url: "xxxxxxx.php", async: true, cache: false, data: sendData, success: function ( data ) { }, error: function ( XMLHttpRequest, textStatus, errorThrown ) { } }); 中止 xhr.abort();

  • Ajaxを使った読み込みができない

    ●質問の主旨 Ajax(非同期通信)を使って、 ブラウザ上でテキストファイルの読み込みを させたいのですが、できません。 Ajaxにお詳しい方、ご指導願います。 ●質問の補足 HTML5とjqueryの技術を使って、 テキストファイルの中身(Hello,World)の 読み込みをさせたいと考えております。 参考サイトにもとづいてやってますが、 画像の表示ができません。 表示させるためにはどうしたら良いでしょうか? ●コード <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>jQueryの練習</title> <script src="http://code.jquery.com/jquery-1.7.2.min.js"></script> </head> <body> <h1>jQueryの練習</h1> <div id="main"></div> <input type="button" id="kick_ajax" value="Ajax!"> <script> $(function() { $('#kick_ajax').click(function() { $('#main').load('contents.txt', function() { alert('読み込み終了!'); }); }); }); </script> </body> </html> ●テキストファイルのファイル名 contents.txt ●参考サイト(ドットインストール) http://dotinstall.com/lessons/basic_jquery/519

    • ベストアンサー
    • AJAX
  • DOMの種類を一覧できるサイト

    今はやりのAjax用関数で以下のようなものがあります。 function createXMLHttpRequest(){ var XMLhttpObject = null; try{ XMLhttpObject = new XMLHttpRequest(); }catch(e){ try{ XMLhttpObject = new ActiveXObject("Msxml2.XMLHTTP"); }catch(e){ try{ XMLhttpObject = new ActiveXObject("Microsoft.XMLHTTP"); }catch(e){ return null; } } } return XMLhttpObject; } IEやそれ以外のブラウザで利用可能なActiveXObject(DOM)を選択できるようになっていますが、ここで使われているMsxml2.XMLHTTPやMicrosoft.XMLHTTPのようなDOMがたくさんリストアップされているサイトを探しています。最初にこの関数を作った人はどうやってこれらのDOMを見つけたのか気になりますし、自分で似たような関数を作ってみたいので。どうか情報提供をお願いいたします。

  • ajaxとphpでapiのデータ取得

    上手にお伝えできるか不安ですが、以下の事象の原因で考えられるものがありましたら、アドバイスいただきたいです。 [処理内容] js(ajax)でphpをたたいて、GAのapiに接続、ページビューを取得して その取得内容もとにphpで静的ファイルを生成(jsonやhtml)して、任意の箇所で表示させています。 アクセスランキングのようなものになります。 ---------------------------------------------------- jsでphp呼び出し→phpでGAにアクセス→GA→phpで受け取る→jsonやhtml生成 ---------------------------------------------------- [気になる事象] GAからのデータの取得やjsonの生成は概ねうまくいっているのですが、時にデータが取得できない時があります。 何故かphpファイルを更新する(ソースに改行を加えただけ)と正しいデータが取得できたりします。 そんなことが動作に影響するのかわからないのですが、また1日後とかにデータを取得して表示させようとすると、 phpファイルを更新しない限り前回取得した状態から更新されなくなります。 キャッシュみたいなものが介在するのかわからないのですが、ajaxの部分の記述でcashはfalseとしています。 ちなみにGAの管理画面ではページビューが取れているので、apiとphpの間が怪しいといえば怪しそうな気もしています。 尚、静的ファイル(jsonやhtml)のタイプスタンプの更新は、js(ajax)にアクセスする度に正しく行われている為、 それらのファイルの生成そのものは問題ないと思われます。 拙い説明で恐縮ですが、 どうぞよろしくお願いいたします。

    • 締切済み
    • PHP