Chrome不发送Ajax数据?

时间:2012-02-18 03:48:07

标签: jquery ajax

我使用Chrome的jquery $.ajax有一个奇怪的行为,这是我的代码:

$('.edtBtn').click(function(){
            var id = $(this).attr('id');
            var $inputs = $('#saveForm'+id+' :input');
            $.ajax({
                cache: false,
                type: "POST",
                data: $inputs,
                url: "ajax/save.php?timestamp=<?php echo time();?>",
                success: function(data) {
                    if (data === "success"){
                        $('#saved'+id).attr('src', 'images/saved.png');
                    }
                },
                 error: function(XMLHttpRequest, textStatus, errorThrown) { 
                    alert(textStatus+" - "+errorThrown); 
                }
            });
            return false;
        });

当我点击IE中的按钮时,一切都在Chrome中顺利执行,但是,它也给了我一个“成功”,但是没有发送输入?

我做错了吗?

2 个答案:

答案 0 :(得分:2)

这不是PHP: - )

var $inputs
data: $inputs,

尝试

var inputs
data: inputs,

然后,你也可以试试$ .post()函数

$('.edtBtn').click(function(){
    var id = $(this).attr('id');
    var inputs = $('#saveForm'+id+' :input');
    $.post("ajax/save.php?timestamp=<?php echo time();?>", {inputs.serialize()},
       function(data){      
                $('#saved'+id).attr('src', 'images/saved.png');
      });
    });
}); 

答案 1 :(得分:0)

您正在将jquery对象传递给服务器。 您应该在表单上使用.serializeArray()

var arr = $("#saveForm" + id).serializeArray();

这将为您提供表单中包含的所有名称值对的数组。 要将其更改为对象,请使用:

var obj = {};
for (var i = 0; i < arr.length; ++i) obj[arr[i].name] = arr[i].value;

然后将obj传递给服务器。