0

Отправка нескольких параметров данных с помощью jQuery AJAX

7

У меня проблема с отправкой 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 ответ(ов)

1

Вопрос о форматировании данных для POST в jQuery:

Вот как должны быть отформатированы данные POST:

key1=value1&key2=value2&key3=value3

В вашем случае (обратите внимание на & как разделитель):

'code=' + code + '&userid=' + userid

Однако, если вы используете jQuery, вам не нужно беспокоиться об этом, если вы зададите ваши данные в виде объекта:

data: { code: code, userid: userid }

jQuery автоматически преобразует объект в нужный формат.

0

Вы должны установить ваши данные следующим образом:

data: 'code=' + code + '&userid=' + userid

Таким образом, вы правильно сформируете строку, содержащую параметры code и userid. Убедитесь, что переменные code и userid содержат нужные значения перед отправкой данных.

0

Вы можете попробовать следующее:

data: 'code=' + code + '&userid=' + userid,

Вместо

data: 'code=' + code + 'userid=' + userid,

В вашем коде пропущен символ & между параметрами, что может привести к некорректной обработке данных на сервере. Убедитесь, что вы правильно разделяете параметры с помощью амперсанда &.

0

Обычно отправка ваших данных в таком формате помогает:

data: { code: code, userid: userid }

Самое важное, что не следует забывать, это убедиться, что имена переменных, которые вы отправляете, совпадают с теми, что ожидаются на сервере.

0

Ответ от Л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.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь