Как обработать ответ jSON XMLHttpRequest? - PullRequest
1 голос
/ 21 апреля 2011

Я пытаюсь контролировать ответ json, который отправляю обратно клиенту, но не знаю точно, как .. Вот простая демонстрация:

код JS

xhr = new XMLHttpRequest();
xhr.open("POST", "page.aspx", true);
xhr.send();

// handle the response with xhr.responseText

.cs код

    bool success = false;
    string message = String.Empty;

    // Create JSON Response
    var jsonData = new
    {
        success = success,
        message = message
    };

    Response.Write(jsonData);    

Проблема в том, что когда я смотрю на xhr.responseText, я вижу:

"{ success = False, message = } 
<!DOCTYPE html PUBLIC ....
....
..
"

Ответы [ 3 ]

0 голосов
/ 21 апреля 2011

Вы хотите сделать Response.Clear (), а затем Response.End () после записи jsonData.

Затем вам нужно обработать ответ JSON в javascript.Я рекомендую JSON-библиотеку Крокфорда .

. Я также рекомендую использовать функцию $ .ajax () jQuery вместо того, чтобы вручную прокручивать свои собственные вызовы XHR.

PS.Ajax-вызовы лучше использовать либо для ASHX ресурсов, либо для PageMethods / WebMethods , объявленных на вашей странице ASPX.Более того, откажитесь от веб-форм и используйте ASP.NET MVC с JsonResults, возвращаемыми вашим контроллером.

PPS.Если вы в конечном итоге используете WebMethods, эта статья отлично.

0 голосов
/ 21 апреля 2011

Ваш код cs не генерирует допустимый JSON (в дополнение к нему отображаются другие данные после данных JSON) Все дескрипторы JSON должны быть в двойных кавычках, как и любые строковые значения. Значения отделяются от своих дескрипторов двоеточиями. Пример: {"success": false, "message": "Это не сработало"}.

Посмотрите на http://json.org/ для библиотек для использования с определенными языками.

0 голосов
/ 21 апреля 2011

Вам нужно Response.Clear(), чтобы очистить ответ до Response.Write

...