Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Здравствуйте.
Я передаю в контроллер через ajax скрипт 2 числа. Контроллер их считает и через ajax возвращает на страницу. Теперь появилась задача проверить эти числа на правила (rules). Когда валидатор выдает fails (пустое поле, например), то я делаю редирект (у меня одна единственная страница), передаю во вьюху $validator, чтобы вьюха вывела мои ошибки, но в консоли пишется следующее: SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data (если я правильно понял, то это строка var res = $.parseJSON(response); в коде). На самой странице не появляются тексты ошибок валидатора, но они прекрасно отображаются во вкладке "Сеть" (браузера Firefox). Когда fails нет, то все работает корректно.
Привожу коды:
ajax скрипт (script.blade.php)
<script>
function AjaxFormRequest(result_id, error_id) {
$.ajax({
url: '{{ URL::to('calculate') }}',
type: "POST", //Тип запроса
dataType: "html", //Тип данных
data: $("#aj").serialize(),
success: function(response) { //Если все нормально
var res = $.parseJSON(response);
if (res.error_code == 0) { //если ошибок нет
document.getElementById(result_id).innerHTML = $("#value1").val() + " + " + $("#value2").val() + " = " + res.result;
} else { //если ошибки есть
document.getElementById(error_id).innerHTML = "Произошла ошибка при отправке формы";//res.message;
console.log("Неудача");
}
},
error: function(response) { //Если ошибка есть
document.getElementById(error_id).innerHTML = "Произошла ошибка";
}
});
}
</script>
Класс контроллер
class CalculateController extends Controller
{
public function calculate(Request $request)
{
$calculator = new Calculator();
$validator = Validator::make(Input::all(), $calculator->rules(), $calculator->messages());
if ($validator->fails()) {
return Redirect::to('/')->WithInput()->withErrors($validator);
}
$calculator->setValue1($request->input('value1'));
$calculator->setValue2($request->input('value2'));
$result = $calculator->calculate();
return response()->json(['error_code' => '0', 'result' => $result]);
}
}
И вьха main
@extends('layout')
@section('main')
//тут пошел html
@if ($errors->has())
<p style="color:red;">
@foreach ($errors->all() as $error)
{!! $error !!}<br />
@endforeach
</p>
@endif
@stop
@section('scripts')
@include('script')
@stop
Буду признателен любой подсказке.
Изменено Tkas (22.06.2016 16:24:13)
Не в сети
Не в сети
Страницы 1