У меня есть форма для редактирования контакта.
Вся форма запрашивается через ajax (загружается в лайтбокс).
Форма предварительно загружена данными о контактах.
Когда вы нажимаете кнопку edit, jQuery проверяет различия в форме и отправляет обратно только измененные данные.
Это отлично работает, кроме.
на локальном хосте делает эхо $_POST['data']
дает [{"name":"firstName","value":"James"}]
выполнение этого на производстве дает [{\"name\":\"firstName\",\"value\":\"James\"}]
Откуда берутся дополнительные \
.
Если это поможет
localhost = windows, php 5.3
производство = 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();
}
});
});