IEでのエラーについて(javascript)

このQ&Aのポイント
  • ChromeやFirefoxでは正常に動作をするのですが、IEだと動作がうまくいきません。
  • evalの箇所でエラーが出ているようです。IEでも通る方法が分かる方がいましたら、ぜひ教えてください。
  • Windows 7のOSでIEのバージョンは9です。
回答を見る
  • ベストアンサー

IEでのエラーについて(javascript)

http://w-x-w.com/2011/07/09/156 上記のサイトのサンプルコードを参考に、HTML5とJavascript、phpによるMySqlへの接続を行っています。ChromeやFirefoxでは正常に動作をするのですが、IEだと動作がうまくいきません。 エラーを辿ったところ、 -----略------------ function search_json(){ var get_json = eval("("+search_msg_data+")"); if(get_json.results == null){ $("#search_data").html("該当するデータは見つかりませんでした。"); } ---------------------- この中のevalのところでエラーが出ているようです。IEでそのエラーが出ているという情報は、サイトを回っていて分かったのですが、今回の場合の対応策が見つかりませんでした。IEでも通る方法が分かる方がいましたら、ぜひ教えてください。 OS: Windows 7 IEのバージョン: 9

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

  • ベストアンサー
回答No.3

エラーを再現できません。 以下のコードでj.resultsが[object Object]となることを確認しました。 Windows7、IE9、スクリプトレット javascript:(function(){var d='{"results":{"1":{"id":"1","name":"abc"},"2":{"id":"2","name":"code"}}}';var j=eval("("+d+")"); alert(d);alert(j.results);})() そのエラーは何行目で、その行付近のコードはどうなっていますか? それが原因ではないでしょうか。

その他の回答 (2)

回答No.2

エラーとは、どんなエラーですか? search_msg_dataの中身はどうなっていますか?

wrywrywry
質問者

補足

エラーは”識別子がありません”と表示されています。 search_msg_dataの中身はMySqlで検索をした結果が返されています。 具体的には {"results":{"1":{"id":"1","name":"abc"},"2":{"id":"2","name":"cde"}}} というように入っています。idとnameはデータベースの列名です。IEでエラーの原因になるのはどのあたりでしょうか。 最初に載せたコードを実行したあとにはevalの結果をいれたget_jsonを var hash = get_json["results"]; でハッシュ化しています。 ChromeやFirefoxでは正常に動作します。

回答No.1

確かIEだとevalで無名関数実行できなかった気がします。うろ覚えです。 「IE eval json」とかでググってみてはどうでしょう。

関連するQ&A

  • javascript var

    javascript 「var」について ソースコード function hello(name){ 「var」 msg = "your name " + name; return msg; } var greet = hello("Tom"); console.log(msg); ソースコードの2行目の頭に「var」をつけるかつけないかでコンソールエラーになるか、ならないかが変わるのですが「var」をつけると何故かエラーになるのですが、その理由が分かる方いらっしゃいますか? 「var」は「バリアブル」の略で変幻自在みたいな意味だと思うのですが、それをつけてエラーになる理由が良く分からなくて質問致しました。 馬鹿な質問ですが答えて頂けると助かります。m(__)m

  • IEだけJavaScriptエラーが起こります

    JavaScript初心者です。 下記のサイトを参考にしてJavaScriptでロールオーバーを入れました。 http://css-happylife.com/log/javascript/000157.shtml firefox、chromeでは問題なく動くのですが、IEだけが 'getAttribute(...)' is null or not an object というエラーが起こります。 いろいろ調べたのですが、全く同じソースを使っているのに、他のサイトやサンプルサイトではエラーが出ていません。 他にjavascriptを入れているとか、ソースを挿入する場所とかでエラーが起こったりするのでしょうか?? よろしくおねがいします。

  • javascriptでXML IEとfireFox

    作成中のホームページで、条件を入力させてその条件に合ったデータ(XMLで管理)を表示する という内容のモノを作ろうとしています。 実際に一通り動く所までは出来たのですが、IEでしか動作せず Firefox等の他ブラウザだと動作しません。 調べてみると、ActiveXObjectが使えないようなのですが どういう方法で実装すると動作するようになるのでしょうか。 よろしくお願いします。 ----------以下ソース一部---------- // ワーク用の XML ドキュメントオブジェクト var objDocWk = new ActiveXObject("Msxml2.DOMDocument.3.0") // 出力用の新しいルートノードを作成 dstNd = objDocWk.createNode(1, "list", "") // XML ドキュメントオブジェクト生成 var objDoc = new ActiveXObject("Msxml2.DOMDocument.3.0") objDoc.async = false objDoc.load("msch.xml") var objRootNode = objDoc.documentElement.childNodes =======================補足======================= 下記のようにやってみたのですが、jsのエラーが起り原因がわからないです。※fireFoxのみIEでは動作確認済 if (window.ActiveXObject) { //for IE // XML ドキュメントオブジェクト生成 var objDoc = new ActiveXObject("Msxml2.DOMDocument.3.0") objDoc.async = false // 曲情報の読込み objDoc.load("msch/msch.xml") // ワーク用の XML ドキュメントオブジェクト var objDocWk = new ActiveXObject("Msxml2.DOMDocument.3.0") } else { //for Firefox // XML ドキュメントオブジェクト生成 var xhttp = new XMLHttpRequest(); xhttp.open("GET", "msch/msch.xml", false); xhttp.send(null); var objDoc = xhttp.responseText; window.alert(objDoc); // ワーク用の XML ドキュメントオブジェクト var xhttp2 = new XMLHttpRequest(); xhttp2.open("GET", "msch/msch.xml", false); xhttp2.send(null); var objDocWk = xhttp2.responseText; window.alert(objDocWk); } // 出力用の新しいルートノードを作成 dstNd = objDocWk.createNode(1, "musiclist", "") // 曲情報のルートノードを取得 var objRootNode = objDoc.documentElement.childNodes エラー内容が objDocWk.createNode is not a function  と objDoc.documentElement is undefined   です。

  • IE8でのjavascriptエラーについて

    こんにちは。 IE8で表示されてしまうjavascriptエラーで困っています。 以前、別の方が同じような質問をされていたのですが、 理解できず新たに質問させて頂きました。 私はjavascriptに関して全くの素人です。 技術者の方、大変お手数ですが素人にも分かるような回答を頂けると とても助かります。 ロールーオーバに使用目的で以下のスクリプトをリンクしております。 // JavaScript Document function smartRollover() { if(document.getElementsByTagName) { var images = document.getElementsByTagName("img"); for(var i=0; i < images.length; i++) { if(images[i].getAttribute("src").match("_off.")) { images[i].onmouseover = function() { this.setAttribute("src", this.getAttribute("src").replace("_off.", "_on.")); } images[i].onmouseout = function() { this.setAttribute("src", this.getAttribute("src").replace("_on.", "_off.")); } } } } } if(window.addEventListener) { window.addEventListener("load", smartRollover, false); } else if(window.attachEvent) { window.attachEvent("onload", smartRollover); } 画像を2枚用意し、ロールオーバ時に●●●_on.jpg、そうでないときに ●●●_off.jpgと分けております。 マックサファリ、ファイアーフォックス、ウィンドウズIE6,7は 問題なく表示されます。 ところがウィンドウズIE8でのみ、このようなエラーが出てしまいます。 `get Attribute()` is null or not an object どうやらこの箇所が怪しいようです。 ↓ ↓ ↓ ↓ if(images[i].getAttribute("src").match("_off.")) ご回答を頂けるととても助かります。 どうぞよろしくお願い致します。

  • javascriptで困っています。教えてください

    新JavaScript例文辞典のJSONデータを解析して読み込む http://www.openspc2.org/reibun/javascript2/JSON/parse/0001/ を参考にjsonを扱うことを勉強してるのですが、以下のようにすると、関数の中の変数n,pには、読み込んだ値が代入されているのですが、関数の外の変数nには値がなくなり、変数pには代入されています。原因が分からず困っています。よろしくお願いします。 <!doctype html> <html> <head> <meta charset="utf-8"> <title>無題ドキュメント</title> <script type="text/javascript"> var n; var p; httpObj = new XMLHttpRequest(); httpObj.open("get", "jsondata.txt", true); httpObj.onload = function(){ var myData = JSON.parse(this.responseText); n = myData.item[0].itemName; p = myData.item[0].itemPrice; alert("関数の中のn="+n); alert("関数の中のp="+p); } httpObj.send(null); alert("関数の外のn="+n); alert("関数の外のp="+p); </script> </head> <body> </body> </html> ---------------------------------------------------------- 【JSONデータ:jsondata.txt】 {"item":[ { "itemCode":91, "itemName":"塩ラーメン", "itemPrice":300}, { "itemCode":94, "itemName":"味噌ラーメン", "itemPrice":290}, { "itemCode":95, "itemName":"豚骨ラーメン", "itemPrice":320} ] }

  • eval、$.eachで順番が入れ替わるのはなぜ?

    JSONデータをeval後、$.each(jQuery)を通すと、 順番が入れ変わってしまうのですが、どういう原因が想定されるでしょうか? <JSON> data: { "5":{"id":"5","name":"5","menu1":"24"}, "9":{"id":"9","name":"9","menu1":"12"} "1":{"id":"1","name":"1","menu1":"4"}, "2":{"id":"2","name":"2","menu1":"2"}, } ※「menu1」降順で予めソート <コード> $.get("data.php?"+○○, function(data){ var list = eval( '(' + data + ')' ); $.each(list,function(i) { 上記コードを通すと、 Chromeで見た際、データがid順に並び変わります。 (FireFoxだと、元の順番通りです) <質問> 「eval」もしくは「$.each」を利用すると、 データの順番が入れ替わることがあるのでしょうか? 入れ替わらないためには、どうすれば良いのでしょうか?

    • ベストアンサー
    • AJAX
  • IEでJavaScriptが動かない?

    IE7を使用しています(WindowsXP/SP2)。 ヤフーのトップページ左上に「Yahoo!サービス」とあり その右側に「一覧」というボタンがあります。 これをクリックすると、通常はスライドして選択画面が表示されますが、私が使用しているPCではいきなり以下のページに飛んでしまいます。 http://services.yahoo.co.jp/ これはなぜでしょうか。 いろんなサイトをアクセスしても、ときどき「お使いのブラウザには対応していません」と、Javascript関係でのエラーメッセージが出てきます。インターネットオプションをすべてリセットしても同様です。Javascript制作サイトのサンプルで動作確認しましたが、Javascript自体は動いているようです。 ステータスバーにはときどき警告が出ています。詳細を見ると「・・・はNULLまたはオブジェクトではありません」が多いです。 原因がまったくわからないので助けてほしいです。 ちなみに上記症状はIE6のときから発生しています。 宜しくお願いします。

  • JSONのデータから商品名の取得の仕方

    今現在下記の記述でJSONを取得しています。 ===== <html> <head> <title>JSONのデータを使ってみる</title> </head> <script type="text/javascript" src="./prototype.js"></script> <script type="text/javascript"> function execute() { var url = './ItemSearch_json.php'; var paramList = "keyword=" + encodeURIComponent("ふくろう"); var a = new Ajax.Request( url, { method: 'get', parameters: paramList, onSuccess: function(request) { // alert('読み込み成功しました'); // jsonの値を処理する場合↓↓ var json; eval("json="+request.responseText); }, onComplete: function(request) { alert('読み込みが完了しました'); $('container').innerHTML = request.responseText; // jsonの値を処理する場合↓↓ var json; eval("json="+request.responseText); }, onFailure: function(request) { alert('読み込みに失敗しました'); }, onException: function (request) { alert('読み込み中にエラーが発生しました'); } } ); } </script> <body> <div id="container">content</div> <button onclick="execute()">サンプル実行</button> </body> </html> ===== このままだと、プレーンテキストは表示されるのですが、商品名や価格の一覧などを選択して表示できません。 evalなどを使うのかなと思うのですが、はっきり分かりません。 ヒントを教えていただけないでしょうか。

    • ベストアンサー
    • AJAX
  • JavaScriptエラー

    Windows7 IE9(メーカーインストールのIE8の時も同様)にしてから、サイトの閲覧や操作がうまくいかないことがあり、色々確認してみたところ、JavaScriptでエラーになっているようなのですが、どう対応していいのかわかりません。 インターネットオプションの設定については、動作がうまくいかないサイトのQAに合わせて設定もしてみたので、問題ないと思います。 同様のエラーで解決された方、なにか対処法が思いつく方、教えていただけませんか?

  • Ajaxで作成したinputタグが正しく動作しない

    元々htmlで作成してあるform内容をAjaxで送受信し、 その得られたjsonデータを元に新規にテーブルを作成しています。 ここまでは出来ているのですが、更にこのテーブルにそれぞれの項目にソートボタンを実装したいのですが、これが実現しません。 <input type="button"で作成したボタン(元のhtmlにあるボタンと同様の記述)は元ページのphpに遷移してしまい、 <button></button>で作成したボタンは何の動作も行いません。 元々ある検索ボタンと同様に非同期でpostするには 追加で作成したform内の要素はどのようにすれば可能でしょうか? //テーブル作成関数 function create_table(data){ //テーブルヘッダー var text = "<table><thead><tr><th>foo</th><th></th>"; $("li", "#foo_list").each(function(i, v){ text += "<th>" + v.innerHTML + "\      //●inputボタン作成部 <input type='button' class='search_btn' value='検索' />\ <button class='search_btn' value='" + v.id + "_up' ><img src='./foo.gif'></button>\ <button class='search_btn' value='" + v.id + "_down' ><img src='./bar.gif'></button></th>"; }); text += "</tr></thead><tbody>"; ~省略~ //テーブル閉じる text += "</tbody></table>"; $("#result_table").html(text); } //ajax送受信 $(function(){ var jsdata = ""; $('.search_btn').click(function(){ var form = $("#frm"); var json = $(form.serializeArray());   $.ajax({ url : "./hoge.php", type : "post", data : json, success: function (jsdata){ results_data = eval( "(" + jsdata + ")" ); create_table(results_data); } }); }); }); よろしくお願いいたします。

専門家に質問してみよう