ASP.NET: проблема параметрического усилителя 'данных' Ajax jQuery

Не комментируйте свой код

Комментарии не являются кодом, и поэтому, когда все меняется, очень легко не изменить комментарий, который объяснил код. Вместо этого я предпочитаю рефакторировать дерьмо из кода до такой степени, что нет причин для комментариев. Пример:

if(data == null)  // First time on the page

to:

bool firstTimeOnPage = data == null;
if(firstTimeOnPage)

Единственный раз, когда я действительно комментирую, это когда это TODO или объяснение почему

Widget.GetData(); // only way to grab data, TODO: extract interface or wrapper
16
задан Tatham Oddie 25 August 2011 в 04:24
поделиться

2 ответа

Попробуйте передать данные в виде строки, а не объекта, например:

$.ajax( {
    ...
    data : '{ a: 2, b: 3 }',
    ...
} );

Причина в том, что если вы указываете объект как данные, jQuery сериализует данные, используя формат строки запроса, тогда как сервер ожидает формат JSON напрямую.

Это происходит, несмотря на указание jQuery использовать JSON в качестве типа данных - похоже, это связано только с результатом, а не с данными запроса, отправленными на сервер.

Все остальное, что у вас есть, мне кажется правильным.

22
ответ дан 30 November 2019 в 21:46
поделиться

If you're working with JSON-enabled .NET WebServices/WebMethods... my tips are:

  • Be very careful with web.config configuration. Use it to enable big parameters, POST method and JSON.

  • Use a framework to handle Object serialization e deserialization. I would recommend NewtonSoft's Json.NET.

I don't think ASP.NET automagically do it for you, your parameters are always strings. You should take that strings, deserialize it and turn it to an array of objects.

0
ответ дан 30 November 2019 в 21:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: