Разделите данные через запятую (,) и отобразите их соответствующим образом

Вот возвращение моего контроллера в случае ошибки

return "0".",".$messages = $validator->messages();

Таким образом, выход будет

0,{"firstname":["The firstname field is required."]"lastname":["The lastname field is required."]}

И расщепление,

var dat = data.split(",");
if(dat[0] == "0")
{
$('#stage').html(dat[1]);
}

Итак, если у меня будет первая ошибка, вывод будет

{"firstname":["The firstname field is required."]

Как сделать разделение или обработать его, чтобы отображались только ошибки

то есть поле имени обязательно для заполнения.

Обновить :

Как предлагает Codebird:

вернуть $ validator-> messages ();

if(data != '')
{
obj=JSON.parse(data);
var error_string='';
$.each(obj, function(entry) {
error_string+=obj[entry]+'<br />';
});
$('#stage').html(error_string);
} else {
$('#stage').html('Success Saving');
}

Приставка :

введите описание изображения здесь

0

Решение

Как я уже говорил выше, я бы справился с этим следующим образом:

Во-первых, вы должны json_encode $validator->messages() как это массив, так ваш PHP становится следующим:

Возврат

 return json_encode($validator->messages());

тогда JS:

 if(data != '')
{
obj=JSON.parse(data);
var error_string='';
$.each(obj, function(entry) {
error_string+=obj[entry]+'<br />';
});
$('#stage').html(error_string);
} else {
//Success goes here.
}
1

Другие решения

Попробуйте этот подход:

// php - I assume $validator->messages() returns json
$response = array(
'messages' => json_decode($validator->messages()),
'success'  => false,
);
echo json_encode($response);

а также

// javascript
if (!data['success']) {
$.each(data['messages'], function(index, value) {
$('#stage').append(value + '<br/>');
});
}

Посмотрите здесь: http://jsfiddle.net/hzf5tuuc/

0

По вопросам рекламы [email protected]