#javascript #php #ajax
#javascript #php #ajax
Вопрос:
Когда я попытался использовать ajax для отправки данных из файла javascript в файл php, в файле php после использования ничего не отображалось
$_POST[‘пользовательский ввод’]
Вот файл javascript:
searchBox.addListener('places_changed', function() {
var places = searchBox.getPlaces();
userinput = places[0].name.toString(); // Get user input from search box
// Pass data to userinput.php via ajax
$.ajax({
url: 'userinput.php',
data: {userinput : userinput},
type: "POST",
success: function (result) {
alert(JSON.stringify(result));
}
});
});
php-файл:
if (isset($_POST)) {
$servername = "localhost";
$username = "XXXXXXX";
$password = "XXXXXXXXX";
$dbname = "CALIFORNIA";
$city = $_POST['userinput']; // Nothing is posted here
// Create connection
$conn = new PDO("mysql:host=localhost;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, 1);
$sql = $conn->prepare("SELECT State FROM CITY as C WHERE C.City_name=$city");
$sql->execute();
$result = $sql->fetchAll();
$json = json_encode($result);
echo $json;
}
Я смог подключиться к базе данных mysql. Однако данные из файла javascript в php не были отправлены. Я не уверен, что делать с этого момента. значение $city ничего не выводит. На стороне клиента он распечатал пустой объект.
Комментарии:
1. оповещение (userinput); и проверьте, что оно возвращает. это предупредит вас о вводе текста в поиске или нет?
2.
data: {'userinput' : userinput},
пропущенные кавычки3. Кавычки @Anant или без кавычек в этом случае ничего не меняют. Кавычки полезны только при задании имени ключа, которое указывает допустимый идентификатор JS (например:
not-valid
, из-за тире)4. покажите нам значение
userinput
5. var places = SearchBox.getPlaces(); userinput = places[0].name.toString(); изменение переменной userinput имеет правильное значение или нет
Ответ №1:
в вашей функции ajax попробуйте установить dataType
свойство
$.ajax({
url: 'userinput.php',
data: {'userinput' : 'userinput'},
type: "POST",
dataType: "text", // add this property
success: function (result) {
alert(JSON.stringify(result));
}
});
Комментарии:
1. оказывается, что PHP больше не разрешает RAW_POST. хотя код в порядке
2. это может вам помочь. php.net/manual/en/reserved.variables.httprawpostdata.php