Я использую 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>
Мои вопросы
Вы не сообщаете 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,
. Данные должны быть отформатированы как строка запроса.