3

私はJquery、Ajax、PHPを使用して、mysqlデータベースに書き込まれる変数を送信しようとしています。Ajaxリクエストが行われていますが、変数がphpによって取得されていません。なぜそうなのかわかりません。

firebugとconsole.log()を使用すると、write_results.phpに対してPOSTが行われたことがわかります。

応答を確認すると、

注意:未定義のインデックス:2行目のE:\write_results.phpのtestscore

これが私のPHPです

<?php 
  $testscore=$_POST['testscore'];  //get testscore from Ajax 
  include 'DB.php';
  $con = mysql_connect($host,$user,$pass);
  $dbs = mysql_select_db($databaseName, $con); 
     if (isset($_POST['testscore'])) {  
       $addClient  = "INSERT INTO variables (`id` ,`name`) VALUES (NULL,'$testscore')";  
       mysql_query($addClient) or die(mysql_error());  
       }

?>  

これが私のajaxスクリプトです

<script type="text/javascript">
$(document).ready(function() {  
testscore ="tryagain"; //testvalue to enter into the mysql database
  $.ajax({  
    type: "POST",  
    url: "write_results.php",  
    data: testscore,      
    success: function(){  
      $('#box2').html("success");
    } 
  })
}); 
</script>

私の質問

  1. $ testscoreがajaxスクリプトから値を受け取らないのはなぜですか?
  2. どうすればこれを修正できますか?
4

3 に答える 3

6

POSTパラメータの送信方法をJSに指示しているのではありません。JSを次のように変更します。

data: { 'testscore':testscore },

これはinformと同等"testscore=" + testcoreですkey=valuetestscoreこれは、変数をキーにマップすることをJSとPHPに通知し"testscore"ます。その後、キーを取得します。$_POST['testscore']

編集: http: //api.jquery.com/jQuery.ajax/、「サーバーへのデータの送信」を参照してください

于 2011-11-08T05:51:32.827 に答える
2

PHP コードでは、$_POST['testscore'] から $testscore 値を取得します。$_POST はスーパーグローバル配列で、testscore はここのインデックスです。この $_POST 配列のインデックスは、投稿したフォームのフィールド名から取得されます。あなたの場合、ajaxを使用してphpページにデータを渡しています。GET メソッドまたは POST メソッドで渡すことができます。ajax コードで type:POST を指定したため、POST で渡しているため、php ファイルで $_POST 変数を使用できます。ただし、値を保持する ajax コードで配列インデックスを指定していません。

testscore ="tryagain"; //It will only assign the value to the javascript variable

キーと値のペアを指定する必要があります。枯れた方法でそれを行うことができます:

testscore="testscore=tryagain"; //In your php code, the testscore will be the array index and tryagain will be its value.

以下のように、キーと値のペアを JSON 形式で PHP ファイルに送信することもできます。

testscore={'testscore':'tryagain'}; 

送信する値が複数 (たとえば 2 つ) ある場合は、次のようにできます。

testscore={'testscore':'tryagain','index2':'value2'}

PHP コードでは、ajax のタイプとして post を使用する場合、以下のように取得できます。

$testscore1=$_POST['testscore']; //It will assign tryagain
$testscore2=$_POST['index2'];    //It will assign value 2
于 2011-11-08T06:27:47.980 に答える
0

使用してみてくださいdata: "testscore=" + testscore, 。データはクエリ文字列としてフォーマットする必要があります。

于 2011-11-08T05:54:51.043 に答える