我使用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中顺利执行,但是,它也给了我一个“成功”,但是没有发送输入?
我做错了吗?
答案 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
传递给服务器。