$ .ajax JSON не передает значения по завершению - PullRequest
1 голос
/ 24 июля 2010

У меня раздражающая проблема, по окончании я получаю undefined при попытке сделать простую проверку URL. Успех работает нормально.

я получаю правильный ответ JSON:

{"error":"some error"}

а это мой jQuery

$("#myform").submit(function(){
            dataString = $("#myform").serialize();
            $.ajax({
                type:       "GET",
                url:        "myform.php",
                data:       $.URLDecode(dataString), //fixing url problem
                dataType:   "json",
                beforeSend: function(){ 
                        $('#search').append('<img src="images/ajax-loader.gif" />'); //loader
                        $('.error').remove(); //removes every submit
                    }, 
                success:    function(data){
                                    $('<span class="error">' + data.error + '</span>').appendTo($('#search'));

                            },
                complete:   function(data){ 
                                $('#search img').fadeOut(); //removes loader
                                    alert(data.error);

                }

            });
            return false;  //force ajax submit
        });

Любой намек, пожалуйста?

Ответы [ 4 ]

1 голос
/ 24 июля 2010

Если вы посмотрите на документы:

complete (XMLHttpRequest, textStatus)

Функция, которая вызывается по завершении запроса (после успешного выполнения и обратного вызова с ошибкой).Функция получает два аргумента: объект XMLHttpRequest и строку, описывающую состояние запроса.Это событие Ajax.

Данные не являются возвращаемым значением вашего метода.

Если вы используете firebug, используйте console.log (XMLHttpRequest), и вы увидитечто включает в себя.

Вы также можете сделать это (быстро - здесь используется eval - не рекомендуется).

var err = eval("(" + XMLHttpRequest.responseText + ")");
alert(err.Message);
0 голосов
/ 24 июля 2010

Я думаю, что вы хотите URLEncode, а не URLDecode?В любом случае, я бы порекомендовал fiddler для устранения подобных проблем - он покажет вам, что именно отправляется на сервер или с сервера.

0 голосов
/ 24 июля 2010

Согласно документам , полное событие не содержит ваш ответ json.

Зачем вам нужно определять полный обработчик и обработчик успеха? Просто определите успех.

0 голосов
/ 24 июля 2010

возможно, $ .URLDecode () возвращает не структуру ключа / значения JSON

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