Самый безопасный способ отправить строку JSON на сервер PHP - PullRequest
1 голос
/ 01 августа 2011

Я пытался отправить строку JSON на сервер PHP следующим образом:

$.ajax({  
    type: "POST",  
    url: "themes.php?page=themeoptions",  
    data: {structure : JSON.stringify(structure)},    
});

Однако все кавычки в строке, которую я отправляю, экранируются автоматически, поэтому я не могу их декодировать вPHP с json_decode ().Я мог бы удалить все escape-символы, но я действительно сомневаюсь, что этот способ отправки данных JSON на сервер безопасен.

Итак, мне было интересно, есть ли у вас какие-либо идеи о том, как это сделать в простой и безопасный (не обязательно пуленепробиваемый) способ?

Спасибо!

Ответы [ 3 ]

4 голосов
/ 01 августа 2011

Вы можете просто сделать '{"structure":' + JSON.stringify(structure) + '}' или {structure: structure}

Первый - это строка JSON, поэтому jQuery не нужно его анализировать. Второй - объект javascript, поэтому jQuery точно знает, как его анализировать.

Но вы смешиваете их, поэтому jQuery запутывается и перекодирует ваш объект, потому что вы закодировали только половину вашего объекта.

Так что другой альтернативой будет JSON.stringify({structure: structure })

1 голос
/ 01 августа 2011

Попробуйте это

$.ajax({  
    type: "POST",  
    url: "themes.php?page=themeoptions",  
    data: {structure: structure},    
});
0 голосов
/ 01 августа 2011
$.ajax({  
    type: "POST",  
    url: "themes.php?page=themeoptions",  
    data: structure,    
});

Цитирование из документации :

dataObject String

Данные для отправкина сервер.Он преобразуется в строку запроса, если это еще не строка.Он добавляется в URL для GET-запросов.См. Параметр processData, чтобы предотвратить эту автоматическую обработку.Объект должен быть парой ключ / значение.Если значение является массивом, jQuery сериализует несколько значений с одним и тем же ключом на основе значения традиционной настройки (описанной ниже).

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