将数据传递给ajax请求jquery?

时间:2010-12-30 09:34:57

标签: php javascript jquery ajax

当我尝试通过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 个答案:

答案 0 :(得分:3)

此:

data: user,

应该是

data: {user: user},

因为您正在寻找名为“user”的POST变量并使用其值。 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变量客户端是无害的,当然如果你想在不止一个地方使用它......