2016-04-05 13 views
1

ここにも同様の質問がたくさんあることは知っていますが、20件以上を検索して解決策はありませんでした。AJAXによってPHP POSTが送信されない

問題は次のとおりです。私はindex.phpにajaxポスト値を送ります。私がFirebugを見ると値はありますが、それをページにエコーしようとすると、POSTは空になります。私は本当にこれに固執しています。

<?php 
    if(isset($_POST['action'])) 
    { 
     echo $_POST['action']; 
    } 
?> 
<!DOCTYPE html> 
<html> 
<head> 
    <title>Test</title> 
    <meta charset="utf-8"> 

    <!-- JQUERY LIBRARY AND SCRIPTS --> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
</head> 
<body> 
    <a href="index.php">Test</a> 

    <script type="text/javascript"> 
     $(document).ready(function() 
     { 
      $('a').on('click', function() 
      {     
       $.ajax({ 
        url: 'index.php', 
        type: 'POST', 
        data: {action: 'clicked'}, 
        success: function(data) 
        { 
         console.log(data); 
         alert('Done!'); 
        }, 
        error: function(jqXHR, textStatus, errorThrown) 
        { 
         alert(errorThrown); 
        } 
       }); 
       return false; 
      }); 
     }); 
    </script> 

</body> 
</html> 
+0

あなたのブラウザに既にレンダリングされているページに変数を送信するためにAJAXを使用しています。変数を取得しているPHPがサーバー側で実行され、現在表示しているページではなく、AJAX経由で返されたため、これはうまくいかないでしょう。 –

答えて

1

は、このコードは、Ajaxのレスポンスで、ページに、単に「クリック」の文字列で、全体のHTML文書を付加することを印刷しようとしません。

は、ここに私の完全なコードです。これをブラウザに表示するには、データを印刷する必要があります。 FireBugでコンソールを調べると、Ajaxコールの応答はまさに私が上で説明したものであることがわかります。

あなたが戻ってあなたのページに値が、ここに私の提案であることを印刷する場合さて、あなたは ajax.php別のファイル、を作成します。

<?php 
if(isset($_POST['action'])) 
{ 
    echo $_POST['action']; 
} 
?> 

そして、いくつかを含めるようにindex.phpのを修正あなたがその値を印刷しようとしている場所の要素です。私。あなたの要素の直後に<div id="response-results"></div>を追加してください。その後、Ajaxコールを変更してajax.phpに行きます。index.phpではありません。

今、あなたがレンダリングされたページへのAjaxのレスポンスを移入する必要があり、これは次のようにjQueryを使って簡単に行うことができます。

勿論
$("#response-results").html(data); 

、これはAJAX呼び出しの成功ハンドラに入ります。

+0

問題は、ページに値を印刷する必要がないことです。別のロジックを実行するには、POSTでこの値が必要です。わかる? – cfascina

+1

FirebugでAjaxコールの応答を調べましたか?コンソールで?何がそこに印刷されますか?ここではまったく別の問題に直面しているようです。 – slax0r

0

あなたのブラウザにすでにレンダリングされているページに変数を送信するためにAJAXを使用しています。変数を取得しているPHPがサーバー側で実行され、現在表示しているページではなく、AJAX経由で返されたため、これはうまくいかないでしょう。 それが動作します、これを試してみてください:

のindex.php:

<?php 
    if(isset($_POST['action'])) 
    { 
     echo $_POST['action']; 
    } 
?> 

main.htmlと:コメント

<!DOCTYPE html> 
<html> 
<head> 
    <title>Test</title> 
    <meta charset="utf-8"> 

    <!-- JQUERY LIBRARY AND SCRIPTS --> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
</head> 
<body> 
    <a href="#123">Test</a> 
    <div id="result"></div> 

    <script type="text/javascript"> 
     $(document).ready(function() 
     { 
      $('a').on('click', function() 
      {     
       $.ajax({ 
        url: 'index.php', 
        type: 'POST', 
        data: {action: 'clicked'}, 
        success: function(data) 
        { 
         // console.log(data); 
         $("#result").html(data); 
        }, 
        error: function(jqXHR, textStatus, errorThrown) 
        { 
         alert(errorThrown); 
        } 
       }); 
       return false; 
      }); 
     }); 
    </script> 

</body> 
</html> 
0

R Jとして、それは私がした何をすることは不可能ですしようとしている。

私のページが読み込まれると、一番上のPHPスクリプトが処理されますが、私のPOSTには何もありません。

私のAjax呼び出し後、ページは再びレンダリングされますが、一番上のPHPスクリプトでは何も得られません。サーバーサイドです。私のページでAjaxデータを印刷することさえ可能だが、PHP $ _POSTはその価値を決して得られないことが分かった。

ありがとうございます。

関連する問題