2011-11-08 16 views
3

私はJquery、Ajax、およびPHPを使用して、mysqlデータベースに書き込まれる変数を試してみます。 Ajaxリクエストが行われていますが、変数がPHPによって取得されていません。なぜこれが当てはまるのか分かりません。放火犯とはconsole.logを(使用この未定義のインデックスエラーを修正するにはどうすればよいですか? Jquery Ajax to PHP

)私はレスポンスをチェックすると、私はPOSTが

をwrite_results.phpするためになされたことを見ることができ、それは

お知らせ言う:にtestscore:未定義のインデックスをE:\ write_results.phpラインここ

には私の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. どうすればこの問題を解決できますか?

答えて

6

JSにPOSTパラメータの送信方法を教えているわけではありません。これはkey=value形式で"testscore=" + testcoreのと同じです

data: { 'testscore':testscore }, 

:にあなたのJSを変更します。

+0

私はちょうど情報が送信されことに気づき、あなたが以下のように行うことができます送信するために2つ) PHPには "tryagain"だったので、あなたの答えはたくさんの意味があります。あなたの答えをありがとう! – TryHarder

0

「サーバーへのデータの送信」、http://api.jquery.com/jQuery.ajax/を参照してください:それはあなたが変数testscoreは、あなたがして$_POST['testscore']

を編集して拾うよキー"testscore"、にマッピングすることにしたいJSやPHPを告げます試してみてくださいdata: "testscore=" + testscore, データをクエリ文字列としてフォーマットする必要があります。

+1

必ずしも - データはクエリ文字列または値のマップを受け入れることができます。 – nickb

+0

クイック返信ルークありがとう: – TryHarder

2

あなたのPHPコードでは、$ testScoreの値形式$ _POST ['testscore']が得られます。 $ _POSTは超大域配列で、testscoreはここのインデックスです。この$ _POST配列のインデックスは、投稿するフォームのフィールド名に由来します。あなたの場合、ajaxを使ってデータをPHPページに渡しています。 GETメソッドまたはPOSTメソッドのいずれかを渡すことができます。あなたはajaxコードでPOST:POSTをタイプ指定したのでPOSTを渡すので、あなたのPHPファイルで$ _POST varibaleを使うことができます。しかし、あなたは値を保持する配列インデックスをあなたのAjaxコードで指定していません。

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

キー値のペアを指定する必要があります。あなたが枯れ方法でそれを行うことができます:あなたはまた、次のようにJSON形式でPHPファイルにキーと値のペアを送信することができます

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

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

あなたが複数の値を持っている場合は

(例えば。

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

をとAjaxでタイプとしてのポストを使用している場合は、あなたのPHPコードであなたは、以下のようにこれを取得することができます:

$testscore1=$_POST['testscore']; //It will assign tryagain 
$testscore2=$_POST['index2']; //It will assign value 2 
+0

非常に詳細な答えをありがとう!理解するのはとても簡単です。 – TryHarder

関連する問題