Обработка ответов со стороны сервера в вызовах jQuery ajax - PullRequest
0 голосов
/ 07 марта 2012

У меня есть недостаток в коде, и я немного запутался.

    $.ajax({
        type: 'POST',
        url: '/contact/index/add/',
        data: $("#addContact").serialize(),
        success: function(data, status, xhttp) {
            var response = eval ("[" + data + "]");
            console.log(response.msg);
            if ( response.success ){
                console.log( response.msg );
            } else {
                console.log( response.msg );
            }
        },
        dataType: "html"
    });

Я ищу ответ, чтобы получить доступ к массиву (закодированному в формате JSON), однако в строке console.log (response.msg) я получаю 'undefined'

Если я console.log (ответ), он показывает (в firebug) как:

[Object {success = true, msg = "test"}]

Запрос отправляет обратно следующую строку:

{ "Успех": правда, "сообщение": "тест"} Вот почему я должен заключить ответ в [] для eval.

Так что меня смущает то, как мне получить доступ к свойствам указанного массива.

Серверная часть у меня (php / zend framework)

echo Zend_Json_Encoder :: encode (array ('success' => true, 'msg' => 'test')); выход;

Что мне нужно сделать, чтобы получить доступ к ключу / значениям массива, как в строке

if( response.success ) { // do something }

Нужно ли изменять сторону сервера или JavaScript?

Ответы [ 3 ]

1 голос
/ 07 марта 2012
dataType: "json"

И не используйте eval для анализа json. Используйте jQuery.parseJSON

1 голос
/ 07 марта 2012

Нужно указать право dataType.Вы должны указать JSON в качестве возвращаемого типа данных:

dataType: 'json'
0 голосов
/ 07 марта 2012

Попробуй поменять квадратные скобки с обычными - вот оператор eval "(" + ...

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