Почему мой JSON кодируется? - PullRequest
0 голосов
/ 06 июня 2011

У меня есть следующий код, который я отправляю кучу данных JSON в файл ASHX, где я буду обрабатывать эти данные.Каким-то образом JSON кодируется, и я понятия не имею, что его кодировало.

 $.ajax({        
    url: '/save_objects_channels.ashx',
    data: jsonParams,
    contentType: 'application/json',
    dataType: 'json',                                
    success: function(data) {                                  

    },
    error: function (xhr, ajaxOptions, thrownError){

    },
    complete: function() {

    }
});

Вот мой пример json, который я разместил (я генерирую это как строку):

var jsonParams = '[ { objectID: 333, channelID: 3, supplierId: 2, checked: true },{ objectID: 444, channelID: 4, supplierId: 5, checked: true } ]';

enter image description here

Ответы [ 2 ]

4 голосов
/ 06 июня 2011

jQuery закодировал его.Вы решили отправить его как запрос GET (по умолчанию это .ajax()), который передает все данные в URL как часть строки запроса.Как указывает Clement Herreman , строка запроса должна быть закодирована.

Возможно, вы захотите переключиться на type: "POST" в параметрах .ajax().

У запросов GET есть ограничение длины, которое может кусать вас, когда строка JSON становится длиннее.POST-запросы практически не имеют ограничений по размеру.

Кроме того, вы вызовете утечку данных: строки запросов записываются в журналы веб-сервера, возможно, конфиденциальные данные могут оказаться там, когда вы не будете осторожны.POST-запросы также регистрируются.Но их полезные данные не будут регистрироваться, так как они не являются частью URL.

3 голосов
/ 06 июня 2011

Поскольку URL должен быть закодирован, в соответствии с RFC 3986

Подсказка о том, как кодировать URL, используя Javascript: Кодировать URL в JavaScript?

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