Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Привет!
Пишу обработку сервером ajax-запроса. Ларка дает возможность провалидировать данные еще до передачи их в контроллер в слое Request. Очень удобно. Собственно, написал тестовый код и столкнулся с одной проблемой.
namespace App\Http\Requests;
use App\Http\Requests\Request;
class SomeRequest extends Request
{
public function authorize()
{
return auth()->check();
}
public function rules()
{
return [
'name' => 'required',
];
}
public function messages()
{
return [
'name.required' => 'Заполни поле, дружок!!',
];
}
}
Через ajax передаю не форму, а заранее собранный из инпутов объект в формате json.
$.ajax({
url: "[url]https://v-pope-kaki.net[/url]",
async: false,
headers: { 'X-CSRF-Token': $('#token').val() },
type: "POST",
cache: false,
data: JSON.stringify(object), // {name: 'lupa pupkins'}
dataType: 'json',
...
});
Проблема в том, что указанное в правилах поле существует в передаваемом объекте, но валидатор его не видит и выдает ошибку, что, мол, давай, вводи-ка поле, дальше не пущу. Очень не хочется отсылать именно форму. У меня проводится первичная валидация еще на стороне клиента в js прямо перед ajax-запросом. По мне логично передавать именно законченный объект вместо сухой формы. Есть способ как-то это обойти?
Изменено Remover_4000_pro (04.08.2020 02:46:32)
Не в сети
Не пойму, зачем конвертить в строку, а потом пытаться на стороне сервера поймать из нее name(разумеется его там не будет)
М.б. сразу воспользоваться методом
$.post( "test.php", { name: "John", time: "2pm" } );
Но настоящие джыдаи сейчас не используют jquery вообще, все нужные заголовки он подставляет сам.
axios
.post('/ajax/url', {
name: "sometext",
})
.then(r => this.afterPost(r.data))
Не в сети
Страницы 1