Правильное отображение результатов проверки в Jquery

Мой вопрос немного сложен, но эксперты могут понять, о чем я пытаюсь спросить.

У меня есть следующий код в Jquery, который отправляет форму и отображает результат проверки с целевой страницы.

submitHandler : function(form) {
if($('#login').submit(function(){return false;}))
{
$.ajax
({
type: 'POST',
url: $('#login').attr('action'),
data: $('#login').serialize(),
success: function(data) 
{
$('#results').html(data);
}
});
}
return false;
},

Целевая страница находится в php. Содержимое, отображаемое в #results, представляет собой результаты проверки, обработанные php.

Моя проблема: я получаю некоторые буквенно-цифровые строки с результатом проверки следующим образом

{"output":"","status":-1,"error_messages":{"error":["пожалуйста, введите ваше имя."],"success":[]}}

Это потому, что у меня есть php-файл с именем message.php, результаты проверки должны быть получены через message.php. он точно обрабатывает и удаляет нежелательные символы и правильно отображает сообщение об ошибке.

Есть ли способ сделать это в приведенном выше JavaScript (Jquery), чтобы результаты проверки должны поступать через message.php вместо прямого отображения, чтобы избежать добавления нежелательных символов в результаты проверки (должен отображаться только результат проверки).

Или у вас есть другие предложения?

Жду благоприятных действий от эксперта.

С уважением ТОМ

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ При отключении браузеров JavaScript результат выдается правильно, так как форма не отправляется через jquery-Ajax (через form action="") и приходят сообщения проверки через сообщения.php.

Сообщения отображаются как

<?php 
 echo $messages; 
 ?>

person t0m    schedule 05.05.2013    source источник
comment
Хм; Это message.php выполняется только в том случае, если javascript отключен, но не в том случае, если вы выполняете вызов ajax, что вы говорите? Пожалуйста, добавьте дополнительную информацию. Что такое действие в форме, это форма #login или что-то еще с другим действием?   -  person hr_117    schedule 05.05.2013
comment
Это не тема в этом выпуске. Куда отправляется форма (действие).. Я говорю о результатах, полученных после успешной отправки формы.. Пожалуйста, прочитайте и ответьте..   -  person t0m    schedule 05.05.2013
comment
Хорошо: Чем я не понимаю, что ваша ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ должна нам сказать.   -  person hr_117    schedule 05.05.2013
comment
Это означает, что сообщения проверки приходят через messages.php, если они не отправляются через Ajax. Пожалуйста, прочитайте то, что я указал перед дополнительной информацией. ЕСЛИ НЕТ; ПОНИМАНИЕ ОСТАВЬТЕ ДЕЛО... ПОЖАЛУЙСТА!!   -  person t0m    schedule 05.05.2013


Ответы (2)


Я игнорирую data['output'] и data['status'], потому что я действительно не знаю, как вы планируете их использовать и какие значения они могут иметь. Я предполагаю, что возвращенное сообщение об успехе или ошибке достаточно для пользователя.

Похоже, что data содержит JSON, так почему бы не вывести соответствующее сообщение об успехе или ошибке?

ДЕМО

...
success: function(data)   
{
    var msg = data['error_messages']['success'][0] != '' ?  data['error_messages']['success'][0] : data['error_messages']['error'][0] ; 
   $('#results').html( msg );
}
...
person gillyspy    schedule 05.05.2013
comment
@gillyspy .. Спасибо .. ошибка, которую я получаю, это error_messages.sucess имеет значение null или не является объектом .. Требуется какая-либо дополнительная информация? - person t0m; 05.05.2013
comment
@gillyspy .. не могли бы вы объяснить метод, который вы используете? - person t0m; 05.05.2013
comment
вы дали нам пример ваших результатов. Похоже, вы заинтересованы в том, чтобы отображать только те результаты, которые имеют отношение к конечному пользователю и понятны ему. Вы не указали, хотите ли вы отображать успех и/или неудачу, поэтому я показываю либо в элементе $('#results'). Я напишу тебе скрипку. - person gillyspy; 05.05.2013
comment
Спасибо .. Я пытаюсь отобразить сообщения об ошибках как об успехе, так и об ошибке .. я имею в виду .. - person t0m; 05.05.2013
comment
Спасибо .. Готовит ли скрипка поддельное сообщение проверки в javascript? Он не отображает сообщение об ошибке или сообщение проверки со страницы действий в php? - person t0m; 05.05.2013
comment
он не может по-настоящему вызвать php-страницу, поэтому он вызывает /echo/json, а поддельный ответ предоставляется fakeValuesToSubmit. Но вы можете увидеть, что ответ правильный, посмотрев на console.log("done!",data); или сделайте его console.log("done!",JSON.stringify(data)), если хотите. - person gillyspy; 05.05.2013
comment
Спасибо .. Удаление нежелательных выходных данных с помощью slice() - это профессионально? - person t0m; 05.05.2013
comment
что slice() вы имеете в виду? Каковы нежелательные результаты? Вы так и не указали, что они из себя представляют. - person gillyspy; 06.05.2013
comment
мой вывод уже указан в вопросе следующим образом. {output:,status:-1,error_messages:{error:[пожалуйста, введите ваше имя.],success:[]}} javscript.slice(5, -3); - person t0m; 06.05.2013
comment
Я запутался, слово slice появляется только на этой странице в этих комментариях, а не в вопросе и не в скрипке. В любом случае, я бы никогда не использовал slice для управления строкой/данными json. Или, может быть, вы спрашиваете, лучше ли выполнять срез строки ошибки/успешности? Я бы сказал, в общем, нет. это было бы хорошо для теста или пластыря, но если ошибка, которую вы генерируете, недостаточно удобна для пользователя, у вас должна быть удобная версия, которая создается на стороне сервера, или компонент перевода, который может обрабатывать ваши строки ошибок и изменять их. - person gillyspy; 06.05.2013
comment
Спасибо за создание скрипки за помощь мне. Точно скрипка совершенно не подходит для меня.. Она не приведет к ошибке, введите имя, которое находится в коде проверки php? вместо этого (пожалуйста, введите имя) мы выдаем поддельный результат в javascript? - person t0m; 06.05.2013
comment
Кроме того, материал, который мы используем, совместим с браузерами?, но я имею в виду, что slice полностью совместим со всеми браузерами. Но если вы скажете, что использование slice в этой теме неэтично, я хочу пойти с вами.. - person t0m; 06.05.2013
comment
в скрипке - если вы введете пустое имя и нажмете Enter, он будет жаловаться, пожалуйста, введите имя. определить все браузеры. Вы должны где-то провести линию, где вы проводите свою линию? Неявно вы сделали выбор браузеров, которые поддерживаются jquery, есть ли что-то другое, что вы хотите поддерживать? что-то более узкое? - person gillyspy; 07.05.2013

Форма ответа @gillyspy верна.
единственная недостающая часть — это часть строки возвращаемых данных ajax как jason.

Либо добавьте dataType: 'json',к запросу ajax.
Или измените функцию успеха на

success: function(str) 
            {
                var data =$.parseJSON(str);
                var msg = data['error_messages']['success'].length != 0 ?  data['error_messages']['success'][0] : data['error_messages']['error'][0] ; 
                $('#results').html( msg );
            }
person hr_117    schedule 05.05.2013
comment
Спасибо, что потратили свое драгоценное время. Но я не получаю правильный вывод при использовании приведенного выше кода... Не могли бы вы проверить... - person t0m; 05.05.2013