Вот возвращение моего контроллера в случае ошибки
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');
}
Приставка :
Как я уже говорил выше, я бы справился с этим следующим образом:
Во-первых, вы должны 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.
}
Попробуйте этот подход:
// 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/