我有联系人编辑表格。
通过ajax(加载到灯箱中)请求整个表单。
表单预先加载了联系人数据。
单击编辑时,jQuery会检查表单中的差异,并仅返回更改的输入。
除了以外工作正常。
在localhost上执行echo$_POST['data']
的给出了[{"name":"firstName","value":"James"}]
在制作时执行[{\"name\":\"firstName\",\"value\":\"James\"}]
额外的\
来自哪里。
如果有帮助
localhost = windows,php 5.3
production = linux php 5.2
如果您需要更多代码,请告诉我
var contact = $(this).attr('rel');
$.facebox(function() {
$.ajax({
url: site_url + 'ajax/contact',
type: 'POST',
data: {
id: contact,
method: 'editForm'
},
success: function(data) {
$.facebox(data);
$('#editForm').submit(function() {
var data = [];
var finalForm = $(this).serializeArray();
var differences = 0;
for (var i in initialForm) {
if (!objectsAreSame(initialForm[i], finalForm[i])) {
data[differences] = finalForm[i];
differences++;
}
}
if (differences > 0) {
$.ajax({
url: site_url + 'ajax/contact',
type: 'POST',
data: {
id: finalForm[0].value,
method: 'editContact',
data: JSON.stringify(data)
},
success: function(data) {
$('#contact' + finalForm[0].value).hide("drop", {direction: 'up'}, 500,
function() {
$('#contact' + finalForm[0].value).replaceWith(data);
$('#contact' + finalForm[0].value).show("drop", {direction: 'up'}, 500, function() {
$(document).trigger('close.facebox');
});
});
return false;
}
});
}
$(document).trigger('close.facebox');
return false;
});
$('#accordion').accordion();
initialForm = $('#editForm').serializeArray();
}
});
});
答案 0 :(得分:1)
看看http://php.net/manual/en/security.magicquotes.php。在您的开发机器上,由于您运行的是5.3.0,因此不推荐使用它们。在您的生产机器上,它们已启用。检查如何禁用它们,但一定要仔细检查您的代码。
答案 1 :(得分:0)
这些只是双引号的转义字符。它可能只是解释器以不同的方式显示它,并且不应该对POSTed变量的实际行为有任何影响。
答案 2 :(得分:0)
echo stripslashes($_POST['data']);