#javascript #php #jquery #ajax
#javascript #php #jquery #ajax
Вопрос:
Я пытаюсь передать переменную из javascript в php, но, похоже, она не работает, и я не могу понять, почему. Я использую функцию, которая должна выполнять три вещи:
- Создайте переменную (на основе того, что пользователь нажал на круговой диаграмме)
- Отправьте эту переменную в PHP с помощью AJAX
- Откройте страницу PHP, на которую была отправлена переменная
Задача номер один работает, что подтверждается журналом консоли.
Задача два не работает. Хотя я получаю предупреждение с сообщением «Успех», на test.php переменная не отражается эхом.
Третья задача выполняется.
Javascript (находится в index.php ):
function selectHandler(e) {
// Task 1 - create variable
var itemNum = data.getValue(chart.getSelection()[0].row, 0);
if (itemNum) {
console.log('Item num: ' itemNum);
console.log('Type: ' typeof(itemNum));
// Task 2 - send var to PHP
$.ajax({
type: 'POST',
url: 'test.php',
dataType: 'html',
data: {
'itemNum' : itemNum,
},
success: function(data) {
alert('success!');
}
});
// Task 3 - open test.php in current tab
window.location = 'test.php';
}
}
PHP (находится в test.php )
$item = $_POST['itemNum'];
echo "<h2>You selected item number: " . $item . ".</h2>";
Спасибо всем, кто может помочь!
Комментарии:
1. Я думаю, что ваша проблема заключается в типе данных, поскольку вы отправляете json, но определяете html. Попробуйте с
dataType: 'json'
2. Тип данных @DekiChan — это тип ответа .
3. Отраженные значения находятся в результате Ajax (который здесь называется data)
Ответ №1:
Из того, что я могу сказать, вы не знаете, для чего используется ajax, если вы когда-либо перенаправляете вызов ajax, вам не нужен ajax
Смотрите следующую функцию (без ajax):
function selectHandler(e) {
// Task 1 - create variable
var itemNum = data.getValue(chart.getSelection()[0].row, 0);
if (itemNum) {
console.log('Item num: ' itemNum);
console.log('Type: ' typeof(itemNum));
window.location = 'test.php?itemNum=' itemNum;
}
}
изменить:
$item = $_GET['itemNum'];
echo "<h2>You selected item number: " . $item . ".</h2>";
или лучше выполнить простой post-запрос из формы, как это делают обычные страницы 🙂
Комментарии:
1. Да, мне пришлось очень быстро выучить PHP для задания. Это сработало отлично. Чем ты!!! 🙂
Ответ №2:
Попробуйте это:
success: function(data) {
$("body").append(data);
alert('success!');
}
По сути, data
это ответ, который вы повторили из файла PHP. И используя jQuery, вы можете append()
получить html-ответ на ваш элемент body.
Ответ №3:
вы должны изменить этот код
'itemNum' : itemNum,
для этого
itemNum : itemNum,
Комментарии:
1. Нет ничего плохого в наличии или отсутствии кавычек.
2. @RaxWeber но это случилось со мной, в то время как переменные имели кавычки в php, я не мог их получить, после удаления это сработало!
3. Ну, PHP отличается от JavaScript .
Ответ №4:
Кажется contentType
, отсутствует, посмотрите, поможет ли это:
$.ajax({
type: 'POST',
url: 'test.php',
dataType: "json",
data: {
'itemNum' : itemNum,
},
contentType: "application/json",
success: function (response) {
alert(response);
},
error: function (error) {
alert(error);
}
});
Ответ №5:
вы можете легко передавать данные в php через скрытые переменные в html, например, наша html-страница содержит скрытую переменную с уникальным идентификатором, подобным этому..
<input type="hidden" id="hidden1" value="" name="hidden1" />
В нашем файле javascript содержится запрос ajax, подобный этому
$.ajax({
type: 'POST',
url: 'test.php',
data: {
'itemNum' : itemNum,
}
success: function (data) {
// On success we assign data to hidden variable with id "hidden1" like this
$('#hidden1').val(data);
},
error: function (error) {
alert(error);
}
});
Затем мы можем получить доступ к этому значению в форме отправки или с помощью javascript
доступ через Javascript (Jquery)
var data=$('#hidden1').val();
доступ через отправку формы (МЕТОД POST) выглядит следующим образом
<?php
$data=$_POST['hidden1'];
// remaining code goes here
?>