разные значения для значения POST? - PullRequest
0 голосов
/ 28 марта 2011

У меня есть форма для редактирования контакта.

Вся форма запрашивается через 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();
    }
  });
});

Ответы [ 3 ]

1 голос
/ 28 марта 2011

Посмотрите на http://php.net/manual/en/security.magicquotes.php. На вашей машине разработки, поскольку вы используете 5.3.0, они устарели. На вашей производственной машине они включены. Узнайте, как их отключить, но обязательно перепроверьте код.

0 голосов
/ 28 марта 2011
echo stripslashes($_POST['data']);

http://www.tizag.com/phpT/php-magic-quotes.php

0 голосов
/ 28 марта 2011

Это только escape-символы для ваших двойных кавычек. Вероятно, только интерпретатор отображает это по-другому для вас и не должен иметь никакого отношения к фактическому поведению переменных POST.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...