• ベストアンサー

window.openで別ウィドウを開くとひらいた先のURLがおかしくなるのは?

JavaScriptで遷移先のURLなどを指定していますが、 そこでボタンを押すと、新しい画面が開くようなしくみになっています。 (1)ボタンが表示されているウィンドウ (2)ボタンによって新しく開かれたウィンドウ ところが(2)はうまく表示されているのですが、 (1)はHTTP 404 - ファイル未検出 が表示されます。 何か問題があるのでしょうか?ちなみにPHPで作成しています。

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

  • ベストアンサー
noname#227796
noname#227796
回答No.2

PHPが問題だとすると解答はできない(現在かじり中)ので、他に原因となりそうな点を再度列挙します。 (1) やはりURLに問題がある。 http://~/hogehoge.php?引数 を直接window.openで指定してみると開けたりするかも。 その場合は、やはりパスの問題でしょう。 (2) 引数の渡し方&設定の問題 たまにあるのが、 http://~/hogehoge.php/引数 と、「?」ではなく「/」以降を引数にしている場合。 設定の問題で、「/」がパスの区切りと判断されていて、引数部分をページと解釈して、それを開こうとして404エラーが発生してる。 「hogehoge.php/」と来たときの「/」が「?」と同等になるように設定する必要がある。 <a href="http://~/hogehoge.php/引数">リンク</a> だと上手くいくが、 <a href="/hogehoge.php/引数">リンク</a> のように指定した場合に上手くいかない倍があったような気がしますので。 うろ覚えに付き、思いっきり間違えてるかも知れません。 (3) bodyタグにonload属性がある <body onload="何かを行うJavascript"> こんな感じでonloadしていて、その中で画面遷移させようとしている。 その画面遷移先のURLが存在しない可能性も考えられる。 (4) metaタグにrefreshが・・・ <META HTTP-EQUIV="refresh" CONTENT="0;URL=http://~/nothing.php"> などと、いきなり他のページに飛ばす処理が書いてある。 しかも、そのページが存在しないため、404エラーが発生。 (5) PHPが直接404を返してる PHP側で認証エラーがあった場合などに、意図的に404エラーを返している可能性はないでしょうか? ・認証失敗→そのパスへのアクセスはできない→パスが存在しないかのように装おう→404を返そう という仕様とか? その場合は、認証チェック周りで何かミスがあるのかも。 (6) アクセス制限されている 設定のやり方によっては、特定のクライアントやIPアドレスなどからアクセスがあった場合、(本当はアクセスできるURLなのに)404を返してアクセスできないかの装うことができます。 (5)と同じような意図です。 (7) 実際には404エラーではない。 404以外のエラーが発生したときに、404を返すように設定が(サーバの方で)変えてある。 このくらいでしょうか・・・ これ以上はわたしにもわかりません。(何か忘れてるような気もしますが) 色々確認してみて下さい。

aiurai54
質問者

お礼

新しいウィンドウのformsに入れ込む形をとってましたが、 無理なやり方をしてました。。。 いろいろな手法を考えていただいてありがとう ございました!!

その他の回答 (1)

noname#227796
noname#227796
回答No.1

(1)であるか(2)であるかは全く関係ないと思いますよ。 404ということは、開くべきURL(というかサイト上のファイルやCGIなど)が見つからないということですから。 window.open("ウインドウに表示するURL","ウインドウの名前","ウインドウのスタイル") と指定しますが、単にURLのところの指定が間違っているだけだと思います。 ソースがわからないので、推測に過ぎませんが。 ありがちなのが、存在しないURLになっていることですね。 相対パス・絶対パスの指定が間違っているとか、スペルミスとかで。 直接表示させるべきURLをブラウザで指定した場合にはどうなるか、確認してみましょう。 404になるなら、指定が間違っている可能性が高いです。

aiurai54
質問者

補足

すみません。 URLは間違っていませんでした。 (1)のウィンドウは他のウィンドウからhidden値で与えられたデータを持っています。 そのhidden値はユーザー認証などに用いるデータなので、できれば 新しいウィンドウにもhiddenで渡したいのですが、 新しいウィンドウには今のところGETでもらうようにしています。 (1)のウィンドウで(2)ウィンドウを開いた時点で、(1)のウィンドウのURLの 最後は[object]となってしまいます。 PHPのプログラムではmodeにより場合わけしていますが、 あたらしいウィンドウが表示された場合はdefaultに入るのでは ないのでしょうか? あたらしくreloadモードなどを作らなければいけないのでしょうか?? 説明しづらくてすみません。

関連するQ&A

  • window.openのターゲットについて

    ウィンドウをjavascriptで開く際に、 window.open("URL","_top")のように ターゲットを指定できると思うのですが、 今一どこを指定しているのかわかりません。 ページA(フレームで分けられている)からwindow.openでページBを開いた場合、ターゲットに_top,_selfなどと指定した場合はページAのフレームのことを指しているのでしょうか? また今、ページA(フレームで分けられている)でURLをクリックするとファイルをダウンロードするプログラムを作成しているのですが、window.openのターゲットに_topを指定すると新しいウィンドウが表示されないのに、_self,_blankなどを指定するとウィンドウが表示され、ダウンロードが終わっても表示されたままになってしまいます。どうしてこのような違いが起きるのかお分かりになる方がみえましたら教えてください。 よろしくお願いいたします。

  • JavaScriptを用いた新しいWindowオープン

    今まで作成していた画面に新たにボタンを追加することになりました。 追加ボタンは送信画面です。 もともと送信画面はあるので、以前まででしたら、 下記のJavaScriptを用いて <INPUT TYPE="button" VALUE="送信確認画面" onClick="javascript:okuru('{val 送信_URL}', 'disp')"> <!-- function okuru(action, mode){ document.forms[0].mode.value = mode; document.forms[0].action = action; return false; } というようにできたのですが、新しい画面を表示したいのですが、 うまくいきません。 イメージとしては下記のようにしたいのですが、 何かよい方法があればご教授お願いいたします。 <INPUT TYPE="button" VALUE="送信確認画面" onClick="window.open(javascript:okuru('{val 送信_URL}', 'disp'));">

  • window.openについて

    こんにちは。質問させてください。 PHPを使用してプログラムを作成しています。 その中でJavaScriptを用いて新しい画面を別表示しようとかんがえました。 ========================================= newWin = window.open("", "new", "width=500 height=300"); newWin.location = "test.php" ========================================= としました。 画面は表示できましたが、引数を持たせたいと考えています。 新しい画面にアクセスしたユーザの名前などを表示したい のですが、(※$nameにアクセスユーザの名前が入っている) どのようにすれば新しい画面にも前画面の情報を 継承したいのですが、どのように引数などを 設定すればいいのでしょうか? わかりづらい質問で申し訳ございませんが、 そのときはご質問ください。すぐ回答します。 では宜しくお願い致します。 m(_ _)m

  • FORMで送信ボタンと戻るボタンを2つつけてそれぞれ遷移先を変えたい

       以下のような画面を作りたいのですが↓ -------------------------------------------------------------------------------- ● a.php (ユーザ情報入力画面) ※フォームに入力する画面    <FORM method="POST" action="b.php">   <INPUT type="text" name="mail">   <INPUT type="submit" name="submit" value="確認">  </FORM> ● b.php (ユーザ情報入力確認画面)※フォームに入力された値を表示する画面  <FORM method="POST" action="c.php">   <!-- ここには、フォームに入力された値を表示する -->   <INPUT type="submit" name="submit" value="登録"> // c.php に遷移する   <INPUT type="submit" name="submit" value="戻る"> // a.php に戻る  </FORM> ● c.php (完了画面) -------------------------------------------------------------------------------- b.php について質問なのですが、 b.phpにおいて、登録ボタンと戻るボタンを2つつけて、 それぞれ遷移先を変えたいのですが、どうすればいいんでしょうか・・・? <FORM method="POST" action="c.php">と書いてしまうと、 戻るボタンを押しても戻らずに、c.phpに遷移してしまいますよね?? こういう場合ってJavaScriptとかで遷移先を指定するんですか・・? もしそうでしたら、JavaScriptがよくわからないので できればサンプルコード示していただけると助かります・・・。   

  • この先から繋がりません

    家のPCから、確定申告等をしてるのですが、申告書作成画面までは普通に開けます。その先から「ウインドウは表示中のwebにより閉じられようとしています。このウインドウを閉じますか?」と出てくるのです。「キャンセル」か「はい」しかなく「はい」を押すと進むのですが、生年月日を入力して「次へ」のボタンを押すと「ページが見つかりません。検索中のページは削除されたか名前が変更されたか、または現在利用できない可能性があります。HTTP404ファイル検出」と出て入力できません。会社のPCではいつでもちゃんと画面は出ます。何故でしょう?教えて下さい。 https://www.keisan.nta.go.jp/h17/ta_top.htm

  • window openについて

    こんにちは、例えば以下のようなスクリプトがあったとします。 <html> <form name = serchform> <input type=text name=id><br> <input type=submit value=ID検索 onclick="openwin()"> <a href="javascript:open(1);"><Img Src="1.bmp"></a><br> <a href="javascript:open(2);"><Img Src="2.bmp"></a><br> <script type="text/javascript"><!-- function openwin() { a = document.serchform.id.value; url = "http://10.8.2.166/test/syuhou_kensaku.php?id="+a; mywin = window.open(url,"","width=1120,height=500"); } function open(select) { if(aa == 1){ alert("Test") url2="http://10.8.2.166/test/kensaku.php?msg="+Testです; mywin2 = window.open(url2,"",""); } } //--></script> このソースを実行すると、ID検索ボタンをクリックしても何も反応せず 1.bmpをクリックすると、Testとメッセージが表示され、画面左下に 警告マークが表示され、何も反応しません。 しかし、function open(select)を削除し、ID検索ボタンをクリック すると命令した処理を実行してくれます。 function openwin()を削除したらその逆も起きるのかと考えやって みたのですが、これについては上記と同じエラーでした。 なぜこのようになるのか原因が分かりません。 どなたかご存知の方がいらっしゃいましたら、アドバイスよろしく お願い致します。

  • window.openについて

    お世話様です。 早速本題なんですが画像のサムネイルページがあります。 そのページからサムネイルをクリックすると新しいウィンドウを開き元画像を表示するのですが、すべてサイズが違うためヘッダに <script language="JavaScript" type="text/javascript"> <!-- function openwin(url, w, h) { window.open(url,"","width=" + w + ",height=" + h); } // --> </script> と書いて、リンク<a>に onclick="openwin(this.href, 800, 600); return false;" とリンク1つづつに数値(幅,高さ)を変えながら入れて、 サムネイルが指定したサイズで新規ウィンドウとして開くところまでは至りました。 ですが、これでは、サムネイルをクリックする度に新規ウィンドウが開いてしまいます。ウィンドウの名前を指定しようと思い、 ヘッダを function openwin(url, name, w, h) { window.open(url, name, "width=" + w + ",height=" + h); とかえ、リンクを onclick="openwin(this.href, new, 800, 600); return false;" と変えました。 これでいけるかと思ったのですが、サムネイルと同じウィンドウに開かれてしまいます。さて、、、自分の力量はこんな程度で、もうわかりません。 どうすれば、アタらしいウィンドウの名前を指定出来るのか、 初歩的なところかもしれませんがご教授よろしくお願い致します。

  • 同じwindowの別formにURLを表示したい

    はじめまして。 ボタンをクリックしたら、ボタンの下の領域に指定したURLの内容を表示したいのですが、希望した動作にならず困っています。 具体的には下のソースのように form を2つ作成し、"F1" に表示されているボタンをクリックされたら、"F2" にURLの内容が表示されたらいいなぁと考えています。 初めて HTML を触っているもので、考えられない変な事をしているかもしれませんが、何かヒントでも教えていただけると、大変うれしく思います。 よろしくお願いいたします。 <環境> OS:winXP pro ブラウザ:IE6 sp1 <html> <head> <script type="text/javascript"> <!-- function onClick_B1(){ window.open("http://www.goo.ne.jp/","F2"); } // --> </script> </head> <body> <form name="F1"> <input type="button" name="B1" value="Go" onClick="onClick_B1()"> <hr> </form> <form name="F2"> </form> </body> </html>

    • ベストアンサー
    • HTML
  • window.openで

    HTML(親画面)からJavaScriptのwindow.openで400×300の別ウインドウを表示させた後、一旦親画面に戻し、新たな別ウインドウを表示させたいのですが、 1.その新たな別ウインドウにはなっているのですが、表に出てきません。 2.新たな別ウインドウを違うサイズで設定(例えば600×400)したものを表示させたいのに、400×300のウインドウサイズのままです。 以上2点の処理がわかりません。教えてください。お願いします。

  • Window.open でフレームに表示

    JAVAを使い、指定のフレームに新しい画面を表示したいのですが、要領が良く判りません。 以下のように _blank で新しいウィンドウを開くのはできます。どなたか ご指導 お願いします。 <TITLE></TITLE> <SCRIPT language="JavaScript"> function new_window(url) { window.open(url, '_blank'); } </SCRIPT> </HEAD> <BODY onload="new_window('comp-page1.htm');">

    • ベストアンサー
    • Java

専門家に質問してみよう