2016-04-08 29 views
0

私はこの問題を克服しています。 PHP、MariaDB、jQuery、その他のWeb開発技術を使用してWebサイトを作成しようとしていますが、クライアント側(jQueryを使用)からサーバー側(PHP)に変数を投稿しようとする際に問題が発生しました。私はページを更新し、私は常に失敗メッセージ「供給情報なし」を取得jQueryのPOST PHPはブラウザに表示されますが、PHPファイルは表示されません

<!DOCTYPE html> 

<html> 
<head> 
     <meta http-equiv="Content-Type" content="text/html" charset="utf-8" /> 
     <script type="text/javascript" src="jquery.js"></script> 
</head> 
<script type="text/javascript"> 
$(document).ready(function() 
{ 
    $.ajax({ 
     type: "POST", 
     url: "index.php", 
     data: {'name': "name1"}, 
    }); 
}); 
</script> 
<body> 
<?php 
    if(isset($_POST["name"])){ 
     $i=$_POST["name"]; 
     echo "num: ".$i; 
    } 
    else{ 
     echo "No information supplied"; 
    } 
?> 
</body> 
</html> 

:私はちょうど私がいる問題を特定するのは非常に単純なファイルを作成しました。私はFirebugで見ることができるので、POSTがブラウザに送られることを知っています、そして、そのステータスコードは200 OKです。だから私は何か正しく動作していなければならないことを知っています。 PHPの構文が乱れていますか?私は、通常のHTMLに埋め込まれたフォームからデータを取り出すときに、これがうまくいくことを知っています。

ご協力いただきありがとうございます。これは本当に簡単な問題であれば、事前にお詫び申し上げます。私は可能な限りウェブ開発を学ぼうとしています。 .post()を使うのではなく、POST変数を送信する長い.ajax方法を使用するまで、私はすべてを試したような気がします。

+0

php cantは、送信されたWebページを更新します。 PHPはサーバ上で動作し、jsのみブラウザ上で動作します。 PHPがあなたのメッセージを表示したい場合は、フォームを通常のフォームのように提出して、ajaxを取り除いてください。 –

+0

このファイルは 'index.php'とも呼ばれますか? – ccKep

+0

はい、ファイルはindex.phpです。 – kscorps

答えて

2

これはあなたの答えです。もしあなたが元のページを吐くことがなければ、それが処理されるならば、あなたはajaxリクエストがあるかどうかを調べるでしょう。 ajax呼び出しに関しては、成功したコールバックを追加して、返されたbodyタグを更新します。あなたはAJAX要求をトリガ前にデータ

<?php 
    if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'){ 
     if(isset($_POST["name"])){ 
      $i=$_POST["name"]; 
      echo "num: ".$i; 
     } 
     else{ 
      echo "No information supplied"; 
     } 
     die; 
    } 
?> 
<!DOCTYPE html> 

<html> 
<head> 
     <meta http-equiv="Content-Type" content="text/html" charset="utf-8" /> 
     <script type="text/javascript" src="jquery.js"></script> 
</head> 
<script type="text/javascript"> 
$(document).ready(function() 
{ 
    $.ajax({ 
     type: "POST", 
     url: "index.php", 
     data: {'name': "name1"}, 
     success: function(data){ 
      $('body').html(data); 
     } 
    }); 
}); 
</script> 
<body> 
this is the original body content 
</body> 
</html> 
+0

この問題は、Ajaxが実行する前にPHPが実行されていることに起因しています。だから、このような状況での解決策は、私がこのようなことをする必要があるときはいつでも、Ajaxが最初に実行されることを確認することです。 – kscorps

0

あなたのPHPコードは、実行するサーバーの解釈されるため、あなたはあなたが必要なもの、ブラウザ

で結果のHTMLを見ることが前にPHPを実行successを追加することですAJAX要求の結果を取得し、有用なことを行うajax要求オブジェクトのコールバック(例えば、<div>要素に配置するなど)。以下の例は、単にそれを表示します。

$.ajax({ 
    type: "POST", 
    url: "index.php", 
    data: {'name': "name1"}, 
    success: function(serverReponse){ alert(serverResponse) } 
}); 
関連する問題