【发布时间】:2016-02-02 15:06:39
【问题描述】:
我在尝试通过 AJAX 提交时收到此错误。当不使用 AJAX 时,表单提交到它指定的 url 就好了。我读过这个错误可能会发生,因为表单试图在浏览器中与 AJAX 请求一起提交。我试过使用 onsubmit="event.preventDefault()"。
路线:
Route::post('/post/{id}', [
'uses' => '\App\Http\Controllers\PostController@postMessage',
'as' => 'post.message',
'middleware' => ['auth'],
]);
表格:
<form id="post" role="form" action="{{ route('post.message', ['id' => $user->id]) }}" onsubmit="event.preventDefault()">
<div class="feed-post form-group{{ $errors->has('post') ? ' has-error' : ''}}">
<textarea class="form-control feed-post-input" rows="2" id="postbody" name="post" placeholder="What's up?"></textarea>
<div class="btn-bar">
<!-- <button type="button" class="btn btn-default btn-img btn-post" title="Attach an image"><span class="glyphicon glyphicon-picture"></span></button> -->
<!-- <input type="file" id="img-upload" style="display:none"/> -->
<button class="btn btn-default btn-post" title="Post your message"><span class="glyphicon glyphicon-ok"></span></button>
</div>
@if ($errors->has('post'))
<span class="help-block">{{ $errors->first('post') }}</span>
@endif
</div>
<input type="hidden" name="_token" value="{{ CSRF_token() }}">
</form>
控制器:
public function postMessage(Request $request, $id)
{
$this->validate($request, [
'post' => 'required|max:1000',
]);
if(Request::ajax()){
Auth::user()->posts()->create([
'body' => $request->input('post'),
'profile_id' => $id
]);
}
}
JS:
$('#post').submit(function(){
var body = $('#postbody').val();
var profileId = $('#user_id').text();
var postRoute = '/post/'+profileId;
var dataString = "body="+body+"&profile_Id="+profileId;
$.ajax({
type: "POST",
url: postRoute,
data: dataString,
success: function(data){
console.log(data);
}
});
});
【问题讨论】: