• 締切済み

responseTextでエラーが出ます

下記プログラムがIEアクセスでエラーが出ます。 サーバ環境はdebianでapache2を使用しています。 エラーの内容はIEのステータスバーにエラーマークが 出るだけですが、同じdebian環境の別サーバではちゃんと 動作します。 また、winXPにインストールしたapache2でもちゃんと動きます。 同じdebian環境という事でapacheのコンフィグファイルなども調べてみましたが、全くだめでした。 何か考えられる事があるようでしたらどなたかお教えいただけないでしょうか? ちなみにapacheのエラーログは吐かれていませんでした。 う~~~ん。謎です。 ********[ index.html ]********** <HTML> <HEAD> <TITLE>Ajax Sample1</TITLE> <script language="javascript"> <!-- function AjaxSample1() { var xmlhttp = false; try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { xmlhttp = false; } if (!xmlhttp && typeof XMLHttpRequest!='undefined') { xmlhttp = new XMLHttpRequest(); } if (xmlhttp) { xmlhttp.open('GET', 'read.txt',true); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var disp = document.getElementById('disp'); disp.innerHTML=xmlhttp.responseText; } } xmlhttp.send(null); } } --> </script> </HEAD> <BODY> <a href="javascript:void(0);" onclick="AjaxSample1();">XMLHTTP読み込み</a> <div id="disp"></div> </BODY> </HTML> **********[ read.txt ]**************** <font color="red">Sample1</font><br /> <font color="blue">Sample2</font><br /> ***************************************

みんなの回答

回答No.1

> エラーの内容はIEのステータスバーにエラーマークが > 出るだけですが、 そのエラーマークをダブルクリックすると、詳細が表示されると思いますが、 エラーメッセージとその行番号はどの様に書かれていますか? 提示されたコードでは200しか調べられていませんが、 受信完了時のstatusコードは何でしょうか? > ちなみにapacheのエラーログは吐かれていませんでした。 アクセスログの方はどの様になっていますか? > 同じdebian環境という事でapacheのコンフィグファイルなども調べてみましたが、全くだめでした。 .htaccessまたはそのファイルに相当するファイルはありますか? もしあれば、そのファイルにはどのような設定が書かれていますか? サーバーを代えることで動かなくなるとのことですので、 サーバーの設定が原因となっている可能性は高いと思います。

yuge1972
質問者

お礼

talooさんご回答いただきましてありがとうございました。 私の書き方が分かりづらかったせいでいくつかのご回答を いただきましたが、 エラーマークのシステムエラー番号-1072896658をググってみたところ 文字コードが原因との事で発生しているようでした。 サーバのAddDefaultCharsetの箇所を変更すればなりました。 【参考ページ】 http://memorandum.cocolog-nifty.com/hoge/2006/07/dwrajax_bdfa.html どうもありがとうございました。

関連するQ&A

  • Ajaxで表示させると内容が不変

    下記Ajaxでtest.txtを表示できたのですが test.txtの内容を Hello Japan. 変えてもブラウザのキャッシュをクリアしない限り Hello World! が出つづけます。 下記ページにキャッシュ無効のヘッダをつけても同じです。 子の問題を解決する手段を教えてください。 test.txt: Hello World! x.html: <script> var xmlHttp; function loadText() {  if (window.XMLHttpRequest)  {   xmlHttp = new XMLHttpRequest();  }  else  {   if (window.ActiveXObject)   {    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");   }   else   {    xmlHttp = null;   }  }  xmlHttp.onreadystatechange = checkStatus;  xmlHttp.open("GET","test.txt",true); xmlHttp.send(null); } function checkStatus() { if (xmlHttp.readyState==4&&xmlHttp.status==200) { var node = document.getElementById("disp"); node.innerHTML = xmlHttp.responseText; } } </script> <form> <input type="button" value="push" onClick="loadText()"> </form> <div id="disp"></div>

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

    以下のようにjavascriptの内容を書いた外部のテキストファイルを読み込んで、実行しようとしているのですが、うまくいきません。普通にjavascriptを読み込むのは分かっているのですが、このような方法ができないのでしょうか?よろしくお願いします。 <!doctype html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>無題ドキュメント</title> </head> <body> <div id="jsbox"></div> <script type="text/javascript"> var jsbox = document.getElementById("jsbox"); //非同期通信///////////////////////////////////////////// var xmlHttp; loadText(); function loadText(){ if (window.XMLHttpRequest){ xmlHttp = new XMLHttpRequest(); }else{ if (window.ActiveXObject){ xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); }else{ xmlHttp = null; } } xmlHttp.onreadystatechange = checkStatus; xmlHttp.open("GET", "http://xxxxxxxxxxxx/js_test.txt", true); xmlHttp.send(null); } function checkStatus(){ if (xmlHttp.readyState == 4 && xmlHttp.status == 200){ var str = xmlHttp.responseText;alert(str); jsbox.innerHTML = str; test_js(); } } ///////////////////////////////////////////////////////////////// </script> </body> </html> テキストファイルをhttp://xxxxxxxxxxxx/js_test.txtに置き、テキストファイルの内容が <script type="text/javascript"> function test_js(){ alert("test"); } </script>

  • Ajaxでデータベース(PostgreSQL)

    を非同期で読み込むことができるでしょうか? ファイルならば下記のようにすれば良いみたいですが データベースの場合のやり方がわかりません。 PostgreSQLのデータを読み込むにはどうしたら良いのでしょうか? <script> var xmlHttp; function loadText() { if (window.XMLHttpRequest) { xmlHttp=new XMLHttpRequest(); } else { if(window.ActiveXObject) { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } else { xmlHttp = null; } } xmlHttp.onreadystatechange=checkStatus; xmlHttp.open("GET","plan.txt",true); xmlHttp.send(null); } function checkStatus() { if(xmlHttp.readyState==4 && xmlHttp.status==200) { alert(xmlHttp.responseText); } } </script> <form> <input type="button" value="read file" onClick="loadText()"> </form>

  • 関数の中に記述した関数が、ブラウザによって動かない

    現在、 [1]読み込まれたページのソースを取得 [2]予め指定したキーワードに合致した言葉があるかどうか判断 [3]結果が正なら、関数実行 というプログラミングをJavaScriptでしております。 ほとんど完成しているのですが、ブラウザによって、正常に表示されたり、されなかったりします。 IE6は正常に表示されますが、FireFox2はロード状態のままなにも起こりません。 なにか、考えられる原因はありますでしょうか? サンプルソースを以下に載せますので、小さなことでも、なにか助言がございましたら、いただけると幸いです。 ※サンプルソースではalert関数を使用しておりますが、実際には外部JavaScriptに記述された関数を実行してます。 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> <title>テスト</title> </head> <body> Wolly<br> Welly<br> Willy<br> Wally<br> Wully<br> <script type="text/javascript" charset="utf-8"><!-- ////////// XMLHttpRequest オブジェクトの作成 ////////// httpRequest = false; if(window.XMLHttpRequest) { // Firefox, Opera など httpRequest = new XMLHttpRequest(); httpRequest.overrideMimeType("text/xml"); } else if(window.ActiveXObject) { // IE try { httpRequest = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { httpRequest = new ActiveXObject("Microsoft.XMLHTTP"); } } ////////// GET リクエストの発行 ////////// var serch_url = document.URL; httpRequest.abort(); httpRequest.open("GET", serch_url , true); ////////// レスポンスの処理 ////////// httpRequest.onreadystatechange = function() { if(httpRequest.readyState == 4) { if(httpRequest.status == 200) { var search_txt = "Wally"; var search_txtlen = search_txt.length; var search_01 = httpRequest.responseText.indexOf(search_txt,0); var search_02 = httpRequest.responseText.indexOf(search_txt,search_01+search_txtlen); if((search_01 != -1)&&(search_02 == -1)){ alert("見つからない!"); }else{ alert("見つけた!"); } } } } httpRequest.send(null); // --></script> </body> </html>

  • AJAXのレスポンスをテキストエリアに表示

    以下のようなスクリプト(chat.htmlと、write_log.php)において、chat.htmlからwrite_log.php に送ったリクエスト(xmlHttpRequestオブジェクト利用)に対するレスポンスを受信後に、 document.getElementById("disp_chat").innerHTML = xmlhttp.responseText; としているのに、チャットのボディである、テキストエリアにレスポンスの文字列(ファイル(log.txt)の中身).が表示されません。printした文字列がwrite_log.phpのページで表示されているだけなのです。テキストエリアに、サーバーサイドのPHPから返されるレスポンスの文字列を、テキストエリアに表示するにはどこが間違っているのでしょうか。 ご指導、どうぞよろしくお願いします。 【chat.html】 <!DOCTYPE html> <head><title>チャット</title> <meta charset="utf-8"> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body class="body"> <script type="text/javascript"> var xmlhttp; function httpHandler(){ if(xmlhttp.readyState == 4 && xmlhttp.status == 200){ // レスポンス受信後に呼び出される関数 // alert('test'); document.getElementById("disp_chat").innerHTML = xmlhttp.responseText; } } function onClicked(){ xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); xmlhttp.onreadystatechange = httpHandler; // コールバック関数 xmlhttp.open("GET", "write_log.php"); xmlhttp.send(null); // チャット音鳴動 var myAudio=document.getElementById("audio"); myAudio.play(); } function getDate(){ var date = new Date; var hours = date.getHours(); var minutes = date.getMinutes(); if(hours>=0 && hours<10){ hours = "0" + toString(hours); } if(minutes>=0 && minutes<10){ minutes = "0" + toString(minutes); } return (hours + ":" + minutes); } </script> <center> <div id="title">【チャット】</div> <div id="container"> <div id="disp"> <textarea id="disp_chat" class="disp"></textarea> </div> <div id="input"> <form name="form1" method="GET" action="write_log.php"> お名前:<input type="text" name="user" id="user" class="name"> メッセージ:<input type="text" name="input_chat" id="input_chat" class="input"><br><br> <input type="submit" id="submit" value="送信" onclick="onClicked()"> <!-- <input type="button" id="submit" value="送信" onclick="onClicked()">--> </form> </div> </div> </center> <audio id="audio" src="mjkchat.mp3">Your browser does not support the audio element.</audio> </body> </html> 【write_log.php】 <?php date_default_timezone_set("Japan"); $date = date('H:i:s'); $user = $_GET['user']; $chat = $_GET['input_chat']; $buf = $date.' '.$user.':'.$chat."\n"; $filename = "./log.txt"; $fp = fopen($filename, 'a'); fwrite($fp, $buf); fclose($fp); $buf2 = file_get_contents($filename); print $buf2; //header("Location: chat.php"); ?>

  • 「nullまたはオブジェクトではありません」というエラーが出ます。

    こんにちは、IE7、VISTAで試しています。 エラーもなく動いたのですが、 sClientXとsClientYの値をフォームメールでデータ送信したくて clientX=<input type="text" id=sClientX><br> clientY=<input type="text" id=sClientY><br> という部分を<form>内に入れると 「sClientXはnullまたはオブジェクトではありません」 というエラーが出ます。 エラーの原因はなんでしょうか? <HTML> <HEAD> <SCRIPT language="JavaScript"> <!-- var sample; var sClientX; var sClientY; var target; var isDrag=0; function document_onmousedown(){ isDrag=1; target=event.srcElement;} function document_onmousemove(){ if( isDrag ){ target.style.top=event.clientY-8; target.style.left=event.clientX-8;} } function document_onmouseup(){ isDrag=0; sClientX.value = document.getElementById('sample').style.left; sClientY.value = document.getElementById('sample').style.top; } document.onmouseup = fOnmousemove; function fOnmousemove() { } //--> </SCRIPT> </HEAD> <BODY onmousemove="document_onmousemove()" onmousedown= "document_onmousedown()" onmouseup="document_onmouseup()"> <DIV style="position:absolute" id=sample> このオブジェクトが移動します </DIV> <DIV id=text1 style="position:absolute;font-size:24px; cursor:hand"> </DIV> <form> clientX=<input type="text" id=sClientX><br> clientY=<input type="text" id=sClientY><br> </form> </BODY> </HTML>

  • AJAXでサイト存在チェック時、スクリプトエラー

    AJAXを使用し、遷移したいサイトが存在する場合、その際サイトに遷移し、存在しない場合は、ほかのサイトに遷移するという処理を行いたいのですが、スクリプトエラーが発生しまい困っています。 遷移先をローカルサーバのリンクを指定するとうまくいくのですが、外部サーバのアドレスを指定するとエラーになってしまいます・・。何か制約があるのでしょうか? また、ほかの方法で実現できるのであれば、教えてください。 現在記述しているソースの一部を下記に添付します。 <script language="JavaScript" type="text/JavaScript"> <!-- function fucXMLHttpRequest(){ /* XMLHttpRequestオブジェクト作成 */ var xmlhttp = createXmlHttp(); xmlhttp.onreadystatechange = handleHttpEvent; function handleHttpEvent(){ if (xmlhttp.readyState == 4) { if (xmlhttp.status == 200) {       window.open("http://www.inte.co.jp/xxxx/xxxx"); } else { window.open("http://www.inte.co.jp/"); } } } xmlhttp.open("GET", "http://www.inte.co.jp/xxxx/xxxx" , true); xmlhttp.send(null); return false; } function createXmlHttp(){ if (window.XMLHttpRequest) { return new XMLHttpRequest(); } else if (window.ActiveXObject) { try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { return new ActiveXObject("Microsoft.XMLHTTP"); } } else { return null; } } //--> </script> </head> <a href="#" onClick="fucXMLHttpRequest()">詳しくはこちら</a>

  • Ajaxを使いonMouseoverで説明表示をする

    以下の場合、opentext を直接開けば普通に開くのですが、 getPage で開くとエラーになってしまいます。 いろいろ試した結果 event.clientX がある場合エラーになるようです。 エラーがなく表示できるようになりませんでしょうか。 (文字数制限のためDIVタグ省略) function opentext(settxt){ divid="tiptext"; if(document.all){ d_div=document.all(divid); rx = event.clientX + document.body.scrollLeft +set_x; //rx = 100; ry = event.clientY + document.body.scrollTop +set_y; //ry = 100; }else{ d_div=document.getElementById(divid); rx = NNX + set_x; ry = NNY + set_y; } if(settxt){ d_div.style.display="block"; d_div.style.left = rx +"px"; d_div.style.top = ry +"px"; d_div.innerHTML = settxt; }else{ d_div.style.display="none"; d_div.innerHTML = ""; } } function MouseXY(NNevent){ NNX = NNevent.pageX; NNY = NNevent.pageY; } window.onmousemove = MouseXY;/* himajin.moo.jp */ function getPage(pageURL) { xmlhttp = createXMLHttp(); if (xmlhttp) { xmlhttp.onreadystatechange = setPageData; xmlhttp.open('GET', pageURL); xmlhttp.send(null); }else{ alert("XMLHttpRequest失敗"); } } function setPageData() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { //alert("XMLHttpRequest成功"); opentext([xmlhttp.responseText]); } } // XMLHttpsオブジェクト作成 function createXMLHttp() { try { return new ActiveXObject ("Microsoft.XMLHTTP"); }catch(e){ try { return new XMLHttpRequest(); }catch(e) { return null; } } return null; }

  • 従業員番号を入力すると氏名を表示させるというプログラムを作成しておりますが、エラーが出てしまいます。

    AJAX超初心者です。 従業員番号を入力すると非同期処理を行って社員マスタで検索した氏名を表示させたいのですが、エラーが出てしまい、煮詰まってしまいました。 エラーを解決する方法をどうかご教授ください。 【エラー】 document.getElementById("emp_no") is null ※emp_noがなぜ取得出来ないのかが分かりません。。。 【sample1.htm】 <script type="text/javascript" src="funcs.js"></script> <script type="text/javascript" > //<![CDATA[ function getEmpName(){ var emp_no = document.getElementById("emp_no").value; var emp_name; var httpObj = getHttpObject(); httpObj.open("GET", "sample1.php?emp_no=" + emp_no); httpObj.send(null); httpObj.onreadystatechange = function(){ if(httpObj.readystate == 4){ if(httpObj.status == 200){ emp_name = httpObj.responseText; document.getElementById("emp_name").value = emp_name; } } } } //]]> </script> <tr> <td>従業員番号:<input type="text" name="emp_no" onblur="getEmpName();" /></td> <td>従業員氏名:<input type="text" name="emp_name" id="emp_name" /> 【funcs.js】 function getHttpObject() { var xmlhttp; if (window.ActiveXobject){ try { xmlhttp = new ActiveXobject("Msxml2.XMLHTTP"); } catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (E) { xmlhttp = false; } } }else if (window.XMLHttpRequest) { try { xmlhttp = new XMLHttpRequest(); } catch (e) { xmlhttp = false; } } return xmlhttp; } function addListener(eSrc, eType, eFunc, cap) { if(eSrc.attachEvent) { eSrc.attachEvent('on' + eType, eFunc); }else if(eSrc.addEventListener) { eSrc.addEventListener(eType, eFunc, cap); }else { alert('No support on your Browser'); return false; } } 【sample1.php】 <?php $emp_no = $_GET["emp_no"]; //データベースへ接続 mysql_query("set names utf8"); $result = mysql_query("select * from *** where *** = '$emp_no'"); $row=mysql_fetch_array($result, MYSQL_ASSOC); echo $row["emp_name"]; ?> 長々とソースを記載してしまい申し訳ございませんがどうぞ宜しくお願い致します。 補足 エラー表示された環境はFirebugになります。 どうぞ宜しくお願い致します。

    • ベストアンサー
    • AJAX
  • 【短い】1つだけ展開/表示/非表示/開閉【Javascript】

    このスクリプト、もっと短くなりませんか? idがdisp0,disp20などdisp+数字になっているものを開閉するスクリプト。 動作:対象を開き他を閉じる、対象が開いていた場合対象を閉じる。 条件:連番(0から順番)じゃなくても(0,1,2,7みたいに飛んでも)動作する。 <html> <head> <title>1つだけ展開/表示/非表示/開閉</title> <script> //idがdisp+数字のものを格納 var kakunou = new Array(); window.onload=function(){ var tags=document.getElementsByTagName("*"); for(var i=0;i<tags.length;i++){ if(tags[i].id.match(/^disp[0-9]+$/)){ mituketa=tags[i].id.match(/^disp[0-9]+$/); kakunou.push(mituketa); } } } //開閉処理部分 function disp(tage) { for(i=0;i<kakunou.length;i++){ cb = document.getElementById(kakunou[i]).style; if(kakunou[i]==tage){ if (cb.display == 'none') cb.display = "block"; else cb.display = "none"; } else { cb.display = 'none'; } } } </script> </head> <body> <a href="javaScript:disp('disp1')">+</a>■検索サイト1<br> <div id="disp1" style="display:none"> ├<a href="http://www.yahoo.co.jp/">Yahoo!</a><br> ├<a href="http://www.goo.ne.jp/" >Goo</a><br> └<a href="http://www.lycos.co.jp/">Lycos</a><br> </div> <a href="javaScript:disp('disp200')">+</a>■検索サイト2<br> <div id="disp200" style="display:none"> ├<a href="http://www.infoseek.co.jp/">Infoseek</a><br> ├<a href="http://www.google.com/" >Google</a><br> └<a href="http://kids.goo.ne.jp/">Kids Goo</a><br> </div> <a href="javaScript:disp('disp30')">+</a>■検索サイト3<br> <div id="disp30" style="display:none"> ├<a href="http://www.excite.co.jp/">Excite</a><br> └<a href="http://www.msn.com/" >MSN</a><br> </div> </body> </html>