Передача данных в запрос AJAX JQuery? - PullRequest
1 голос
/ 30 декабря 2010

Когда я пытаюсь отправить данные через ajax, он не передает данные

$('#savenew').click(function () {
  var user = <?php echo $user?>;
  $.ajax({
    type: "POST",
    url: "actions/sub.php",
    data: user,
    success: function () {
      $('#savenew').html('<span>Unsubscribe</span>');
      $(this).removeAttr('id');
      $(this).attr('id', 'clean');
    }
  });
});

Мой PHP-код при получении,

if ($_POST['user']) {
 $user = $_POST['user'];
}

Я делаю что-то неправильно?Пожалуйста, помогите.

1 Ответ

3 голосов
/ 30 декабря 2010

Это:

data: user,

должно быть

data: {user: user},

Потому что вы ищете переменную POST с именем "user" и используете ее значение. jQuery примет литерал объекта и сериализует его в данные POST, используя имена свойств в качестве ключей и значения свойств в качестве значений. Хорошая вещь об использовании объекта (литерального или иного) состоит в том, что тогда jQuery обрабатывает кодирование значений для вас. Вы можете использовать строку (data: "user=" + user), но тогда вам придется позаботиться о том, чтобы самостоятельно выполнить encodeURIComponent часть для строковых параметров (нет необходимости в этом числовом).

Вы также можете сделать все это в одном, без переменной user на стороне клиента:

$('#savenew').click(function(){
    $.ajax({
        type: "POST",
        url: "actions/sub.php",
        data: {user: <?php echo $user?>},
        success: function(){
            $('#savenew').html('<span>Unsubscribe</span>');
            $(this).removeAttr('id');
            $(this).attr('id', 'clean');
        }
    });
});

... хотя наличие переменной user на стороне клиента безвредно, и, конечно, если вы хотите использовать ее более чем в одном месте ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...