Отправка нескольких параметров данных с помощью jQuery AJAX
У меня проблема с отправкой AJAX-запроса к PHP-файлу. Вот как я это делаю:
function checkDB(code, userid) {
$.ajax({
type: "POST",
url: "<?php bloginfo('template_url'); ?>/profile/check_code.php",
data: 'code=' + code + 'userid=' + userid,
datatype: "html",
success: function(result) {
if (result == 0) {
$('#success').html(code + ' был использован!');
} else if (result == 2) {
$('#err').html(code + ' уже существует и был использован....');
} else if (result == 1) {
$('#err').html(code + ' код для использования не существует');
}
alert(result);
}
});
}
Я вызываю эту функцию при отправке формы следующим образом:
<form method="post" class="sc_ajaxxx" id="sc_add_voucherx" name="sc_ajax"
onsubmit="checkDB(document.sc_ajax.sc_voucher_code.value, <?php echo $user_id; ?>); return false;">
</form>
Проблема в том, что переменная PHP для идентификатора пользователя не передается на страницу check_code.php через AJAX. Я не могу получить идентификатор обратно.
Правильно ли я передаю несколько значений на серверную сторону? Без передачи идентификатора пользователя все работает нормально, передавая только код.
Спасибо за помощь! 😃
5 ответ(ов)
Вопрос о форматировании данных для POST
в jQuery:
Вот как должны быть отформатированы данные POST
:
key1=value1&key2=value2&key3=value3
В вашем случае (обратите внимание на &
как разделитель):
'code=' + code + '&userid=' + userid
Однако, если вы используете jQuery, вам не нужно беспокоиться об этом, если вы зададите ваши данные в виде объекта:
data: { code: code, userid: userid }
jQuery автоматически преобразует объект в нужный формат.
Вы должны установить ваши данные следующим образом:
data: 'code=' + code + '&userid=' + userid
Таким образом, вы правильно сформируете строку, содержащую параметры code
и userid
. Убедитесь, что переменные code
и userid
содержат нужные значения перед отправкой данных.
Вы можете попробовать следующее:
data: 'code=' + code + '&userid=' + userid,
Вместо
data: 'code=' + code + 'userid=' + userid,
В вашем коде пропущен символ &
между параметрами, что может привести к некорректной обработке данных на сервере. Убедитесь, что вы правильно разделяете параметры с помощью амперсанда &
.
Обычно отправка ваших данных в таком формате помогает:
data: { code: code, userid: userid }
Самое важное, что не следует забывать, это убедиться, что имена переменных, которые вы отправляете, совпадают с теми, что ожидаются на сервере.
Ответ от Лinus Gustav Larsson Thiel действительно полезен. Я использовал следующий код с функцией $.ajax()
, которая срабатывает при нажатии кнопки, и он работает отлично. Я смог передать параметры дня, месяца и года.
$('#convertbtn').on('click', function() {
var ageddajax = $("#agedd").val();
var agemmajax = $("#agemm").val();
var ageyyyyajax = $("#ageyyyy").val();
if (ageddajax > 0 && agemmajax > 0 && ageyyyyajax > 0) {
$.ajax({
type: 'POST',
url: 'ajaxDataAge.php',
data: 'agedd_id=' + ageddajax + '&agemm_id=' + agemmajax + '&ageyyyy_id=' + ageyyyyajax,
success: function(html) {
$('#cydivage').html(html);
}
});
}
});
В этом коде я получаю значения из полей ввода с помощью $("#agedd").val()
, $("#agemm").val()
и $("#ageyyyy").val()
. Затем проверяю, что все значения больше нуля, и если это так, отправляю AJAX запрос на сервер с указанными параметрами. Успешный ответ от сервера отображается в элементе с ID #cydivage
.
ReCaptcha 2.0 с использованием AJAX
Отправка массива с помощью Ajax в PHP-скрипт
Как загружать файлы асинхронно с помощью jQuery?
Кэширует ли Safari на iOS 6 результаты $.ajax?
Несколько файлов JavaScript/CSS: лучшие практики?