Как я могу исправить эту неопределенную ошибку индекса? JQuery Ajax для PHP

Я использую Jquery, Ajax и PHP, чтобы попытаться отправить переменную, которая будет записана в базе данных mysql. Запрос Ajax выполняется, но переменная не подбирается php. Я не знаю, почему это так.

Использование firebug и console.log () Я вижу, что POST был сделан для write_results.php

Если я проверю ответ, он говорит

Примечание . Неопределенный индекс: testscore в E: \ write_results.php в строке 2

Вот мой 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. Как я могу это исправить?

Вы не сообщаете JS о том, как отправлять параметры POST. Измените свой JS на:

 data: { 'testscore':testscore }, 

Это эквивалент "testscore=" + testcore в форме key=value . Он сообщает JS и PHP, что вы хотите, чтобы переменная testscore была сопоставлена ​​с ключом "testscore" , который вы затем получите с помощью $_POST['testscore']

Изменить: см. http://api.jquery.com/jQuery.ajax/ , «Отправка данных на сервер»

В вашем php-коде вы получите форму $ testcore value $ _POST ['testscore']. $ _POST – супер глобальный массив, а testcore – это индекс. Эти индексы массива $ _POST исходят от имен полей формы, которую вы публикуете. В вашем случае вы используете ajax для передачи данных на страницу php. Вы можете пройти либо методом GET, либо методом POST. Поскольку вы передаете POST, как вы указали тип: POST в вашем коде ajax, вы сможете использовать переменную $ _POST varipale в вашем php-файле. Но вы не указываете индексы массива в своем 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. 

Вы также можете отправить пару значений ключа в файл PHP в формате JSON, как показано ниже:

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

Если у вас есть несколько значений (например, два) для отправки, вы можете сделать следующее:

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

И в вашем PHP-коде вы можете получить это, как показано ниже, если использовать post как тип в ajax:

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

Попробуйте использовать data: "testscore=" + testscore, . Данные должны быть отформатированы как строка запроса.