2016-08-26 1 views
0

私はボタンを含むPHPファイル(index.php)を持っています。そのボタンをクリックすると、PHPファイルにリクエストを投稿するjavascript関数がトリガーされます(login.php)。条件が真であればlogin.phpで、javascriptを使ってurlにリダイレクトされます。この例では、リダイレクトする方法を尋ねるのではなく、そのlogin.phpに単純なalert()を実行するように求めます。投稿リクエストで呼び出されたファイルでjavascriptを実行する

私は必要がありますので、これと言って答えた:

<?php // some php code 
    // php condition is true { 
    echo "<script type="text/javascript"> 
      alert('Alert worked.'); 
     </script>"; 
    // } 
    // more php code 
?> 

をそれはechoを実行しますが、スクリプトを実行したことがありません。
ファイルでjavascriptを実行するにはどうすればよいですか(ポストリクエストによって呼び出されます)。

+1

これはファイルがサーバー側にあり、実際にはブラウザに存在しないためですか? – 707

+2

これは悪い構成です。代わりに、AJAX呼び出しに値(trueまたはfalse)を返し、元のjavasrciptにその値に基づいてリダイレクトを実行させます。 –

答えて

1

これをAJAXで動作させるには、この応答をDOMページに追加する必要があります。たとえば、次のように

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script> 
<script type="text/javascript"> 
    $.get('/test.php', function (script) { 
     $('body').append(script); 
    }) 
</script> 
+0

このソリューションを使用するには、ページにjQuery JSライブラリを含めてください –

+0

これはjavascriptを 'login.php'から実行しませんが、スクリプトを実行します'login.php'で印刷/エコーします。ありがとう! – 707

0

PHPを削除してJSを実際に実行させます。エコーでは、作成中のページに書き込むだけです。

<?php // some php code 
    // php condition is true 
{ 
?> 
<script type="text/javascript"> 
     alert('Alert worked.'); 
</script>"; 
<?php 
} 
// more php code 
?> 
+0

既に試してみましたが、動作しません... – 707

0

としてcale_bアンドリュー・コペル述べたように、あなたはあなたのアプローチを再考する必要があります。 login.phpが出力を表示せずにユーザーをルーティングするためにのみ使用されている場合、Javascriptアラートは表示されません。

あなたは値をlogin.phpして返すためにAJAXを経由してポストを作成することができます

AJAX POSThttps://api.jquery.com/jquery.post/

$.ajax({ 
    type: "POST", 
    url: 'login.php', 
    data: data_to_post, 
    success: function(e) { 
     // e will be whatever you've returned from your login.php script 

     // Perform conditional check on e 
     (if (e === 'success') { 
      // Alert message here 
      alert("You've been logged in!"); 

      // Redirect user here as needed 
      window.location = 'www.your_url.com'; 
     } 
    } 
    dataType: dataType 
}); 

私は、このソリューションは、jQueryのが含まれているに依存していることを言及する必要があります:

<head> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
</head> 

jQueryの - はじめに:http://www.w3schools.com/jquery/jquery_get_started.asp

0

基本的に、あなたが書いたことに基づいて、あなたがしようとしていることの構造は正しいとは言えません。あなたがしたいように聞こえる:

  1. はクリックであなたのインデックスページ
  2. 上のボタンにクリックイベントハンドラを接続し、サーバーにAJAX要求を送信します。 (サーバーに送信/格納する必要のある変数を持つフォームがある場合は、POSTを使用します。サーバーから真偽変数を取得する必要がある場合は、GETを使用します。サーバー上にtrue/false変数が設定されていて、それが提供されていません。変数を取得するためにマイクロ秒だけ提供されるtrue/false変数を持つページを持つことは理にかなっていません別のページ)
  3. "window.location = 'http://whatever.com'"は、JavaScriptを使用して新しいWebページを表示します。または、ボタンがサーバ上のPHPファイルにHTTPリクエストを送信する可能性があり、PHPは通常のように真偽テストに基づいてWebページを送り返すことができます。
関連する問題