AJAXがうまくいかない

このQ&Aのポイント
  • こちらの動画でajaxを使ってhtmlにもともとないニュースを非同期通信で追加する方法をやっているのですが、htmlは表記されてもニュースが追加されません。
  • lv9の無料連鎖場にアップロードしてみたところ下記二つ自体は見れます。 ドメイン/test/ajax-test/rss.xml ドメイン/test/ajax-test/
  • まさかlv9などの無料連鎖場ではクライアントサイドのajaxが使えないなんてことはないですよね
回答を見る
  • ベストアンサー

AJAXがうまくいかない。

AJAXがうまくいかない。 http://schoo.jp/class/1868 こちらの動画でajaxを使ってhtmlにもともとないニュースを非同期通信で追加する方法をやっているのですが、htmlは表記されてもニュースが追加されません。 lv9の無料連鎖場にアップロードしてみたところ下記二つ自体は見れます。 ドメイン/test/ajax-test/rss.xml ドメイン/test/ajax-test/ ・ ress.xml <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=4.1.1</generator> <item> <title>Bootstrap Studio</title> <link>http://blog.h2o-space.com/2015/03/640/</link> <comments>http://blog.h2o-space.com/2015/03/640/#comments</comments> <pubDate>Mon, 16 Mar 2015 23:32:25 +0000</pubDate> <dc:creator><![CDATA[TANIGUCHI Makoto]]></dc:creator> <category><![CDATA[メモ]]></category> <category><![CDATA[bootstrap]]></category> <guid isPermaLink="false">http://blog.h2o-space.com/?p=640</guid> <description><![CDATA[<p>Bootstrapのデザインツール。Web上のサービスが多い昨今ですが、こちらのツールは Windows/Mac/Linux向けのデスクトップアプリケーションとしてリリースされるようです。 2015年 3月リリース予定で … <a href="http://blog.h2o-space.com/2015/03/640/" class="more-link">続きを読む <span class="screen-reader-text">Bootstrap Studio</span></a></p> <p>The post <a rel="nofollow" href="http://blog.h2o-space.com/2015/03/640/">Bootstrap Studio</a> appeared first on <a rel="nofollow" href="http://blog.h2o-space.com">H2O BLOG</a>.</p> ]]></description> <content:encoded><![CDATA[<p>Bootstrapのデザインツール。Web上のサービスが多い昨今ですが、こちらのツールは Windows/Mac/Linux向けのデスクトップアプリケーションとしてリリースされるようです。</p> <p>2015年 3月リリース予定で、現在メールニュース購読者を募集しています。</p> ~ ・ index.html <script type="text/javascript" src="jquery-2.1.3.min.js"></script> <script type="text/javascript"> // ここ $.ajax({ url: 'rss.xml', dataType: 'xml', async: ture, success: function(xml) { make_news(xml); } }); function make_news(xml) { var html = ''; $(xml).find('channel item').each(function() { html += '<li><a href="' + $(this).find('link').text() + '">' + $(this).find('title').text() + '</a></li>'; }); $('#news').html('<ul>' + html + '</ul>'); } </script> まさかlv9などの無料連鎖場ではクライアントサイドのajaxが使えないなんてことはないですよね

noname#226032
noname#226032

質問者が選んだベストアンサー

  • ベストアンサー
  • hymat
  • ベストアンサー率58% (95/162)
回答No.1

(1)実行中のディレクトリに"jquery-2.1.3.min.js"のファイルはありますか? 無ければ、 <script type="text/javascript" src="jquery-2.1.3.min.js"></script> を <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> に書き換えます。 (2)"async: ture"はスペルミスなので、"async: true"に書き換えます。 (3)html内に、実行結果が表示されるはずの "news"というidを持つ要素が無いので、これでは何も表示されません。<div id="news">xxxxxxxx</div> 等として記述を追加します。 (4)"ress.xml"は"rss.xml"の間違いと思いますが、ファイルの内容もxmlとして正しくありません。 (5)xml内に "channel item"、"link"、"title"という要素が無いので、これでは何も検索できません。そういう名前の要素を記述しておきます。ただし要素名に空白は使えないので、ここでは "channel item" を "channel_item" とします。 ----------------------------- したがって、xmlファイルは <?xml version="1.0" encoding="utf-8" ?> <!DOCTYPE channel_item> <channel_item> <link>http://www.this.is.the.link target/</link> <title>linking text</title> </channel_item> のような形式でなければなりません。その上でindex.htmlを <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> <script type="text/javascript"> $.ajax({ url: 'rss.xml', dataType: 'xml', async: true, success: function(xml) { make_news(xml); } }); function make_news(xml) { var html = ''; $(xml).find('channel_item').each(function() { html += '<li><a href="' + $(this).find('link').text() + '">' + $(this).find('title').text() + '</a></li>'; }); $('#news').html('<ul>' + html + '</ul>'); } </script> <div id="news">xxxxxxxx</div> とすれば動きます。

noname#226032
質問者

お礼

async: trueが原因でした。 気づかないもんですね。 言われてみればブール値なのに紫になっていませんでした。 白はスペルミスと覚えるしかないですね。

関連するQ&A

  • XMLReaderから取り出したデータのソート

    いつもお世話になっております。 表題の件で良いサンプルプログラムが見つからず、質問に至りました。 下記のようなXMLデータがあるとして、このnewsに付加されているidの順にソートをするにはどうすればよいでしょうか? sample.xml <topics>   <news id="1">     <head><![CDATA[<a href="#">test1</a>]]><head>     <body><![CDATA[test1]]></body>   </news>   <news id="3">     <head><![CDATA[<a href="#">test3</a>]]><head>     <body><![CDATA[test3]]></body>   </news>   <news id="2">     <head><![CDATA[<a href="#">test2</a>]]><head>     <body><![CDATA[test2]]></body>   </news> </topics> 以上、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • AjaxでXMLの要素が取得できない

    いつもお世話になっております。 Ajaxを勉強しているのですが、prototype.jsを使用し、XMLを読み込んで データを表示させることができず困っております。 ソースは以下の通りです。 logdate.xml <?xml version="1.0" encoding="UTF-8"?> <namelists> <namelist> <name>山田</name> <ten>50</ten> </namelist> <namelist> <name>鈴木</name> <ten>48</ten> </namelist> </namelists> hoge.html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Solutoire.com Plotr &rsaquo; LineChart Example</title> <link type="text/css" rel="stylesheet" href="style.css" /> <script src="./lib/prototype/prototype.js" type="text/javascript"></script> <script type="text/javascript"><!-- function getFile() { new Ajax.Request("logdate.xml", { method: "get", onComplete: displayData }); } function displayData(httpObj) { var XML = httpObj.responseXML; var itemsTag = XML.getElementsByTagName("namelists"); $("result").innerHTML = itemsTag.length; } // --></script> </head> <body> <a HREF="logdate.xml">a</a> <form> <input type="button" value="読み込み" onClick="getFile()"> </form> <div id="result"></div> </body> </html> 結果は0となってしまいます。 ネットで調べたりしましたが、原因がつかめません。 どのようにしたらよいのでしょうか?どなたか教えてください。 宜しくお願い致します。

  • ドメインをまたぐajax

    サーバA(A.com)に <script type="text/javascript" src="http://B.com/"></script> サーバB(B.com)のajax上に object oj = new ActiveXObject("Msxml2.XMLHTTP") ; oj.open(method,url,async,user,password); でajaxを利用しようとしたところ、 上記のoj.openでエラーとなってしまいます。 ローカル上に両方置いてテストしたときはエラーは起きないのですが、 ドメインをまたぐ場合はエラーとなります。 ajaxでドメインをまたぐのはセキュリティ上使用できないのでしょうか?

    • ベストアンサー
    • AJAX
  • Ajaxを使った検索サイト作成

    今、Ajaxを用いてカスタム検索サイトを作成しています。内容は、検索したいキーワードをテキストボックスに入力し、その結果をタブの中で表示させるようにしています。しかし、何度してみても結果を表示させることができません。どうしたら、結果表示させることができるでしょうか?よろしくお願いします。下がソースです。 <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" /> <meta http-equiv="Content-Script-Type" content="text/javascript" /> <meta http-equiv="Content-Style-Type" content="text/css" /> <title>Search Site</title> <link rel="stylesheet" type="text/css" href="_css/import.css" media="all" /> <script type="text/javascript" charset="utf-8" src="_js/jquery-1.3.2.min.js"></script> <script type="text/javascript" charset="utf-8" src="_js/jquery-ui-1.7.2.custom.min.js"></script> <script type="text/javascript" charset="utf-8" src="_js/jquery_ui_tab.js"></script> </head> <body> <div id="header"> <!-- #header --></div> <div id="container"> <div id="read"> <br> </div> <ul> <li><a href="#about" title="about">about</a></li> <li><a href="_ajax/google.html" title="google">google</a></li> <li><a href="_ajax/yahoo.html" title="yahoo">yahoo</a></li> <li><a href="_ajax/goo.html" title="goo">goo</a></li> </ul> <div id="about"> </div> <!-- #container --></div> <div id="footer"> <!-- #footer --></div> </body> </html>

    • ベストアンサー
    • AJAX
  • Ajax.Updater で受けたHTML中のスクリプトを動かしたい

    Prototype.js の Ajax.Updater で受け取ったコンテンツの中で <script type="text/javascript"> .... の関数を動かしたいのですが、上手くいきません。 Ajax.Updater で受け取った下のようなHTMLをページに埋め込んで、クリックするとオブジェクトが見つかりませんと言われてしまいます。 <a href="javascript:void(intest('OK'))">テスト</a> <script type="text/javascript"> var args; function intest (args) { alert(args) } </script> どうしたら動くようになるんでしょうか?

  • Ajax.RequestでXMLデータをパース

    お世話になります。 Ajax.Requestをして、返ってくるデータがXMLなのですが このXMLをパースして表示したいのですが 何か方法はありませんでしょうか? もしかしたら簡単なことなのかもしれませんが ご存知の方がいらっしゃいましたら ご教授よろしくお願いいたします。 ajax.js //////////// function exec(fname,dispArea) { var httpObj = new Ajax.Request(fname, { method:'GET', onSuccess:function(req) { var text = req.responseText; $(dispArea).innerHTML = text; } } ); } ///////////test.html <script language="javascript" type="text/javascript" src="prototype.js"></script> <script language="javascript" type="text/javascript" src="scriptaculous.js"></script> <script language="javascript" type="text/javascript" src="ajax.js"></script> <span id="disp">exec('hoge.xml', 'disp');</script></span> //////////// hoge.xml <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="hoge.xsl" ?> <top> <list> <row>テスト1</row> </list> <list> <row>テスト2</row> </list> <list> <row>テスト3</row> </list> </top> //////////// hoge.xsl <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="top"> <html><title>XMLパース</title> <body> <xsl:for-each select="list"> <xsl:value-of select="row" /> </xsl:for-each> </body> </html> </xsl:template> </xsl:stylesheet>

  • jQueryでajax

    ajax(jQuery使用)を使った以下のサンプルは、 セレクトボックスを選択すると、ボタンを表示するのですが、 そのボタンをクリックしても、アラート(This is success!)が表示されません。 ajaxで吐き出した<button>ボタン</button>のボタンのクリックイベントが 検知しないような感じですが、いったいどこが間違っているのかわかりません。 どなたか、ご教授いただけると助かります。 htmlソース ------------------------------------------- <meta http-equiv="content-script-Type" content="text/javascript" /> <meta http-equiv="content-style-Type" content="text/css" /> <link rel="stylesheet" href="./photo.css" media="all" /> <title> テスト</title> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> <script type="text/javascript"> $(document).ready(function() { $("button").click(function() { alert("Test is success!"); }); $(".first").change(function() { var param = ''; $.ajax ({ type: "POST", url: "ajax.php", data: param, cache: false, success: function(res) { $("#result").html(res); } }); }); }); </script> </head> <body> <select name="first" class="first" id="first"> <option value="1">項目1</option> <option value="2">項目2</option> </select> <p>結果:</p> <div id="result" style="width:808px;"></div> </body> </html> phpソース ---------------------------------------- <?php echo '<button>ボタン</button>'; ?>

    • ベストアンサー
    • AJAX
  • ajax通信の戻り値が空になる。

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> <script src="jquery.xdomainajax.js"></script> <!-- 追加 --> <script type="text/javascript"> $.ajax( { url: URL, type: 'GET', cache: false, dataType: 'xml' } ) .done(function(res) { console.log(res); } ) .fail(function(res) { console.log('FAIL') } ); </script> </head> 上記のコードの通り(url部分は明記を省略)、jquery.xdomainajax.jsを用いたajax通信を行いたいのですが、通信は成功しているもののコンソールを見ると以下のようになっています。 Object { query: Object, results: Array[0] } 本来ならresultsの部分に返り値が格納されるのですが、空になってしまいます。 なにか原因があればご教授頂きたいです。よろしくお願い致します。

  • ajaxを使用したページ移動における検索エンジン対策

    『 2ページ目に移動 → 』 等のリンクをajaxで処理してしまうと、検索エンジンはjascriptを解析しないので、検索エンジンに2ページ目が反映されませんよね。 回避策の基本的な概念としては、以下のソースでよろしいのでしょうか。 <script type="text/javascript"><!-- document.write("<a href='javascript:ajax_link(2);return false'>2ページ目に移動 →</a>"); --></script> <noscript> <a href="http://sample.php?page=2">2ページ目に移動 →</a> </noscript> ※1 検索エンジンに2ページ目が反映されることを目的としています。 ※2 ajaxリンク・通常リンク共に、移動後のページ表示処理は完成しているものとします。 ※3 ajax_linkのjavascriptは完成しているものとします。 大丈夫だとは思うのですが、心配なので質問させていただきました。 また、他の解決策を知っている方は教えてほしいです。 よろしくお願いします。

  • Ajax.Updaterでjavascriptを記述する方法

    お世話になります。 prototype.jsを使って開発をしております。 Ajax.UpdaterにevalScripts: trueを設定し request.responseTextにjavascriptが記述されたものを返しているのですが javascriptに<(小なり)、>(大なり)があると &gt;&ltに変換されてしまい、javascriptが正常に動作しません。 なければ正常に動作します。 恐らくはrequest.responseTextに返す前にPHPで $xsl = new DomDocument(); $xsl->load("hoge.xsl"); $processor = new xsltprocessor(); $processor->importStyleSheet($xsl); echo $processor->transformToXML($xml); とパースをかけていることが原因だと思うのですが 何か対処法はありませんでしょうか? どうぞよろしくお願い致します。 xslに書いてあるjavascriptの内容 <script language="javascript" type="text/javascript"> // <![CDATA[ test = function(hoge){ if(hoge > 3){ alert("over"); } }; // ]]> </script> http://oshiete1.goo.ne.jp/kotaeru.php3?q=1875880 を参考にCDATAをscriptの中に書いたり、外に書いたりと試しましたが ダメでした。当然か。。。 <script type="text/javascript" src="./hoge.js"></script> という風に外部ファイルとしてなら恐らく上手くいくと思うのですが・・・。

専門家に質問してみよう