Firefoxで動くプログラムがIEでは動かない

このQ&Aのポイント
  • Firefoxで動作するプログラムがInternet Explorerでは正しく動作しない問題が発生しています。
  • 特に、File名が渡されずに"Object not found"というエラーメッセージが表示されます。
  • この問題を解決する方法を教えていただけないでしょうか?
回答を見る
  • ベストアンサー

Firefox で動くプログラムがIEでは動かない

各顧客用に個別にサーバー側に作成した2Kバイトほどのファイルを、AJAXを使ってWebページで使用した後、ある条件がそろうとこのファイルを削除するプログラムを作ってあります。Firefox ではちゃんとHTML文書からPHPへファイル名が渡されて削除されますが、Internet Explorer では”Object not found”というメッセージが出てきて、ファイル名が渡されていないようです。この部分は以下のようになっています。 HTML 側: window.document.getElementById("dfform").deleteFileName.value= fname[1]; window.document.getElementById("dfform").status.value=st; ........ window.document.forms[1].submit(); ........ <form method="POST" id="dfform" action="QAgameOver.php" > <input type="hidden" name="deleteFileName" > <input type="hidden" name="status"> </form> ここでFname[1] には削除したいファイル名、 st にはある条件が入っています。 PHP 側: <?php $deleteFileName=$_POST["deleteFileName"]; $gameClear=trim($_POST["status"]); unlink($deleteFileName); ....... ....... ?> PHPプログラムを呼び出したときに出るエラーメッセージは次のようなものです。    Warning: unlink()[function.unlink]:No error in C:\xampp\htdocs\QAgameOver.php on line 11 そしてこの[function.unlink] の部分がリンクになっていて、これをクリックすると「Object Not Found」 「Error 404」などのメッセージが出てきます。 どなたか良い解決方法を教えていただけませんか? papashiro

  • PHP
  • 回答数3
  • ありがとう数3

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

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

PHPに値が正常に受け渡しされていないのではないでしょうか。 Javascript部分が、IEでは引けないプロパティを参照してたりする可能性はあると思います。 window.document.getElementById("dfform").deleteFileName.value= fname[1]; の部分を、 window.document.forms[1].deleteFileName.value=fname[1]; と、引きなおしてみてはいかがでしょうか。

papashiro
質問者

お礼

ご回答ありがとうございます。 ご指摘のように、 getElementById() を forms[1], さらに そのフォーム内の入力要素ある deleteFileName , status を elements[0], elements[1] にしてやってみましたら、ファイルは希望どうりに削除することができました。 しかし status の値は渡されてないようで、呼ぶ出された側のphpプログラムはうまく動作しません。 $deleteFileName=$_POST["deleteFileName"]; $gameClear=trim($_POST["status"]); echo $deleteFileName."</br>"; echo $gameClear."</br>"; としてみても、どちらも表示されませんし、エラーメッセージも前と同じです。 ほかに何か考えられる原因があるのでしょうか? papashiro

その他の回答 (2)

回答No.3

遅くなってしまいましたが、 本件、状況が少し分かりづらく、また、PHP側に問題があるように思われませんので、平行して、Javascriptのカテゴリーでも質問してみたほうが良いかもしれません。 また、質問者さんが問題と思って記述している部分以外のところで問題が出てる可能性も否定できないと思います。 一度、スクリプトをシンプルにしたものを作成して、テストをしてみるというのはいかがですか? 今回の問題である、特定の名前のhiddenが正常に渡せないのであれば、 フォームにそのhiddenのみを置いて、 Javascriptに関しても、そこの書き換えだけを行ってみる。(value = 変数値ではなくて、value = "hogehoge"などと記述してみる)

papashiro
質問者

お礼

ご回答に対する返事が遅くなって、大変申し訳なく思っております。 この件は、やはりhogehogeさんのおっしゃるとおり、別の部分でミスを犯していました。つまり問題のhtmlページからPHPページに移る際に、 <body ....... onunload="gameOver()"> としてあったのですが、 この gameOver()関数は途中で一度書き換えて引数を必要とする形にしてあり、そのことを忘れていたのです。 したがってここを訂正することで問題は解決し、Internet Explorer でもちゃんと動くようになりました。 いろいろ煩わせてしまって、ご迷惑をおかけしました。 ご協力に感謝いたします。 papashiro

回答No.2

statusが渡されていないということであれば、statusというname値を、別のものに変えてみたら何か状況変わりますか?(name="fileStatus"にするとか) 既存のプロパティと名前がバッティングしたりするとエラーが出るということはあると思うので一度少し長めの名前にしてみると良いかもしれません。 また、 document.forms[1].elements[0].value などとしても引けますし、 formにname値を入れているのであれば、 document.forms['dfform'].elements['deleteFileName'].value などと引くことも出来るので、明示的に取得するなら後者で記述して試してみてください。 また、Javascriptの正しいデバッグ方法は分かりませんが、 document.forms[1].submit(); これを叩く前の段階で、 alert(document.forms[1].elements[0].value)などとして、値が書き換わったり定義した値がポップアップされたりするか確認してみてください。 さらに、InternetExplorerの詳細設定で、「スクリプトのデバッグを行わない」(だったかな・・・)にチェックが入ってませんか? これのチェックをはずして再度チャレンジしてみて頂くと、構文エラーがあった場合などに、ある程度ポップアップで教えてくれると思います。

papashiro
質問者

お礼

ご指摘のように、form 内の name 値を変えてやってみました。 また、window.document.forms["dfform"].elements["gameStatus"].value=st として フォーム内の要素を明示してやっても見ましたが、fire fox ではちゃんと動いて、Internet Explorer では動かないという状況は変わりませんでした。 また JavaScript 部分で alert() を使ってphpに渡したい値を表示させて見ましたが、削除したいファイルの名前も、状況を表す値もちゃんと alert ボックスに表示されます。 ただひとつおかしなことは、alert box に表示された後、 ok ボタンを押すともう一度 alert box が現れ、そこには undefined と表示されています。これは fire fox で走らせた時にも起こります。 このあたりに何か問題解決のヒントでもないでしょうか? また「スクリプトのデバッグを使用しない」のチェックボックスのチェックをはずしてみましたが、ポップアップなどは出ませんでした。 また何かヒントになるようなことをご存知でしたら、教えていただけるとありがたいです。 papashiro

関連するQ&A

  • Firefoxで表示できないのは何故でしょう?

    お世話になります IE6、Operaでは表示できたのですがFirefoxでは表示できませんでした(><) 何か見落としがあるのでしょうか? <script language="javascript"> <!-- window.onload = function() { n=document.getElementById("div1").innerText; if(n == "a0"){ document.getElementById("img1").style.display = "block"; document.getElementById("img1").style.top = "100px"; document.getElementById("img1").style.left = "100px"; } if(n == "a"){ document.getElementById("img2").style.display = "block"; document.getElementById("img2").style.top = "100px"; document.getElementById("img2").style.left = "200px"; } } //--> </script> <div id="div1">a</div> <form action="test.cgi" method="post"> <input type="hidden"name="a" value="leap_day"> <input type="image" src="sample0.gif" id="img1" style="position:absolute;display:none;"> </form> <form action="test.cgi" method="post"> <input type="hidden"name="b" value="leap_day"> <input type="image" src="sample1.gif" id="img2" style="position:absolute;display:none;"> </form> n=document.getElementById("div1").innerText; if(n == "a0"){ } if(n == "a") { } を消すと表示はできるのですが・・・

  • PHPのエラーメッセージ

    HTML文書からPHPに送ったファイル名のついたファイルをunlink()関数で削除しようとしているのですが、添付したスクリーンショットのようなエアーメッセージが出てきて進めません。 PHPのコードは下のようなものです。 <!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title> QAdeleteFile.php</title> </head> <body> <?php $FileName=$_POST["deleteFileName"]; $FileName="C:\\xampp\\htdocs\\".$FileName; echo $FileName ; unlink($FileName); echo "<form id='next' method='POST' action='QAgmeOver.php' >"; echo "<input type='submit' value='call QAgameOver' >"; echo "</form>"; ?> <!-- <script type="text/JavaScript"> window.document.getElementById("next").submit(); </script> --> </body> </html> エラーメッセージで言っているQAgameOver.phpというのは上に挙げたコードのプログラムです。このメッセージでは、PHP はそのファイルをこのプログラムの中で探そうとしているように見えますが、そのファイルは当然ローカルサーバーのルートであるhtdocs の中に置いてあります。 なぜこうなるのでしょうか?詳しい方、どうか教えてください。

    • ベストアンサー
    • PHP
  • firefox(3.6.10)で、新しいウィンドウを開いて、POSTデ

    firefox(3.6.10)で、新しいウィンドウを開いて、POSTデータを送るには、どのように書けばいいでしょうか?現在のソースではIE7でしか正常に動作しませんでした(ついでにSleipnirでも動作できるとありがたいです)。 <script> function openNewWindow(url){ obj = document.change; window.open(url, "targetWindow", "width=550,height=550,scrollbars=yes,resizable=yes,status=yes"); // フォームのサブミット obj.method = "post"; obj.action = url; obj.submit(); } </script> <form name="change" action="myself.php" method="post" target="targetWindow"> <input type="button" value="送信" onClick="openNewWindow('newWindow'); return false;"> <input type="hidden" name="hidden_data" value="hoge"> </form>

  • PHPの syntax error について

    PHPのコードを書いて、添付のスクリーンショットのようなエラーが出てきます。 コードは次のようなもので、HTML文書のフォームから送られてきた名前のファイルを消去するものです。 <body> <?php $FileName=$_POST["deleteFileName"]; $FileName="C:\xampp\htdocs\".$FileName; echo $FileName ; unlink($FileName); //echo "<form id='next' method='post' action='QAgmeOver.php' >"; //echo "<input type='submit' value='call QAgameOver' >"; //echo "</form>"; ?> <!-- <script type="text/JavaScript"> window.document.getElementById("next").submit(); </script> --> </body> 問題の line 18 というのは次の行です。 //echo "<form id='next' method='post' action='QAgmeOver.php' >"; unexpected T_STRING というのは、何か文字列の書き方に問題があるということらしいのですが、何をどうやって見てもエラーが消えないのでコメントアウトしてみましたが、それでも同じエラーメッセージが出てきます。 どうすればこのエラーが出なくなるのか、詳しい方がいらっしゃいましたら教えてください。お願いいたします。

    • ベストアンサー
    • PHP
  • 1つの処理で複数表示させたい

    window.onload = function() { document.getElementById('st'); } 処理結果の表示として、<body><p id="st"></p></body> これを10回ほど表示させたいのですが方法がわかりません。 document.getElementById('st1'); document.getElementById('st2'); : <p id="st1"></p> <p id="st2"></p>     : これでやればid毎に表示はさせる事で表示できましたが、 これを省略しての処理方法や他の追加記述等ありましたらご教授頂けたらと思います。 よろしくお願いいたします。

  • Firefoxでvalueの値を変更できない

    フォームの値を通常 <input name="Reload" type="hidden" value="1" id="Reload" /> で飛ばしていますが、サブウィンドウで操作後識別のために window.opener.document.getElementById('Reload').value=2 と値を変更するようにしていました。 しかし、IE6では動くのですがFirefoxでは値が変更できずに悩んでいます。 良い解決法があればよろしくお願いいたします。

  • 選択行の受け渡しに関して

    教えて下さい。 昨日も投稿しましたが、その続きで申し訳ありません。 以下のような明細行を作成し、その明細行に設定したボタンを押したところで、 押された行のデータを別画面に飛ばしたいと考えております。 単純に type='hidden' でいけるかと思われましたが、以下のような記述では 取得できませんでした。 以下のような画面遷移(A.php ⇒ TEST.php)をした場合、選択行のデータを受け渡し したい場合、どのような記述をすれば良いでしょうか? よろしくお願いします。 《記述内容》 ★ A.php <script> function window_open(){ window.open("about:blank","window_name","width=640,height=480,scrollbars=yes,menubar=yes,toolbar=yes,status=yes,directories=yes,location=yes,titlebar=yes"); document.fod.target = "window_name"; document.fod.method = "POST"; document.fod.action="TEST.php"; } </script> <form name="fod" > <?php for($count=1;$count<$row+1;$count++) { print("<TR>\n"); print("<td>$tmp_ringi_kenmei[$count]</td>\n"); print("<INPUT type='hidden' name='test_$count' value=$tmp_name[$count]>\n"); print("<TD><input type='submit' name=inputtest[$count] value='詳細' onclick='window_open();'>\n"); print("</TR>\n"); } ?> </FORM> ★ TEST.php <?PHP if(isset($_POST["inputtest"]) and is_array($_POST["inputtest"])){ print key($_POST["inputtest"]); } for ($j = 1; $j <= $in_row; $j++) { if(isset($_POST["test_$j"])){ $in_test[$j] = $_POST["test_$j"]; } } ?>

    • ベストアンサー
    • PHP
  • javascriptを使ってパラメータの受け渡し

    お世話になります。 親ウィンドウから検索用PHPファイルを子ウィンドウで開き、DB検索を行う検索機能を作っています。 小ウィンドウでの検索結果を function window_close(){ opener.FormA.textA.value = formB.textB.value window.opener.document.getElementById("textA").focus(); window.close() } というスクリプトで親ウィンドウの該当するテキストに渡すようにしています。 この方法でも検索はでき、検索結果を親ウィンドウ側で受け取ることは出来ています。 しかし、この検索画面を複数のテーブルに対して使おうとすると親ウィンドウからパラメータを渡 すことができずテーブルの数だけPHPファイルを作らなくてはなりません。 そこで、動的に対象テーブルを変えることができないか悩んでいます。 イメージとしては、functionの引数でテーブル名を指定し、その値をPHPに渡したいと思っているのですが可能でしょうか。 Jqueryの$.post()が使えるかなとも思ったのですが、正直使い方がよくわかりませんでした。 どなたかよい方法があれば教えてください。

  • javascriptがFirefoxで効かない

    いつもお世話になります。 見よう見まねでやっている初心者です。 下記のようなボタン2個とjavascript でpostする先をわけようと思っているのですが、 IEですと動くのですが、FirefoxとGoogle Chrome では全く動きません。 これをFirefoxとGoogle Chromeでも動かせるのにはどう書けば宜しいのでしょうか? できたら具体的に式を書いて頂けると大変助かります。 どうかご教授の程よろしくお願い致します。 <input type="button" value="new" onclick= "test_new()"> <input type="button" value="edit" onclick= "test_edit()"> function test_new(){ var postform = document.getElementById("register"); postform.action = './test_new.php'; postform.submit();} function test_edit(){ var postform = document.getElementById("register"); postform.action = './test_edit.php'; postform.submit();}

  • fromからの値の受け渡しについて

    fromからの値の受け渡しについて 1) <form action="./mondai.php" method=post target="_blank"> <input type=hidden name="kotae" value="on"> 2) <form action="./mondai.php" method=post target="_blank" onClick="window.open('./mondai.php','newWin','width=500,height=400,toolbar=no,location=0,status=0,menubar=0,scrollbars=yes,resizable=yes'); return false;"> <input type=hidden name="kotae" value="on"> 1) で受け取ると、mondai.phpで、$kotae に on が入りますが、2) で行うと入りません。 2) で上手く値を受け取る方法はありますでしょうか。  アドバイスいただければ幸いです。

    • ベストアンサー
    • PHP

専門家に質問してみよう