我尝试使用 laravel 5 在我的项目中使用 ajax,它可以工作,但前提是我将函数放在路由文件中,如下所示:
Route::post('/post/post_up',function(){
if (Request::ajax()){
$raa=Input::get('_user');
if ($raa=='null') {
return 'Vous devez connecter';
}else{
$already_vote = 'App'Post_vote::where('user_id','=',Input::get('_user'))->where('post_id','=',Input::get('_post'))->count();
if ($already_vote==0) {
$post = new 'App'Post_vote;
$post->post_id=Input::get('_post');
$post->user_id=Input::get('_user');
$post->vote=1;
$post->save();
return 'Votre vote bien enregistre';
}else{
return 'Vous avez déja voté pour ce sujet !';
}
}
}
});
但是当我尝试将此功能从路由.php移动到我的控制器时,它不起作用,我不知道为什么它在路由上工作.php并且在我的控制器中不起作用。 这就是我所做的:
1. 在路线上.php:
Route::post('/post/post_up','VoteController@post_up');
2. 投票控制者.php:
<?php namespace App'Http'Controllers;
use App'Http'Requests;
use App'Http'Controllers'Controller;
use Illuminate'Http'Request;
class VoteController extends Controller {
public function post_up()
{
if (Request::ajax()){
$raa=Input::get('_user');
if ($raa=='null') {
return 'Vous devez connecter';
}else{
$already_vote = 'App'Post_vote::where('user_id','=',Input::get('_user'))->where('post_id','=',Input::get('_post'))->count();
if ($already_vote==0) {
$post = new 'App'Post_vote;
$post->post_id=Input::get('_post');
$post->user_id=Input::get('_user');
$post->vote=1;
$post->save();
return 'Votre vote bien enregistre';
}else{
return 'Vous avez déja voté pour ce sujet !';
}
}
}
}
}
3. HTML 和 AJAX
<form id="post_up" action="#">
<input type="hidden" name="_token" id="_token" value="{{ csrf_token() }}">
<input type="hidden" name="_post" id="_post" value="{{ $post->id }}" />
@if (!Auth::guest())
<input type="hidden" name="_user" id="_user" value="{{ Auth::user()->id }}" />
@else
<input type="hidden" name="_user" id="_user" value="null" />
@endif
<button type="submit" class="btn btn-default" aria-label="Left Align">
<span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span>
</button>
</form>
<script type="text/javascript" src="http://localhost:8080/js/jquery-2.2.1.js"></script>
<script type="text/javascript">
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$(document).ready(function(){
//pour vote up
$('#post_up').submit(function(e){
e.preventDefault();
var _post = $('#_post').val();
var _user = $('#_user').val();
var _token = $('input[name="_token"]').val();
var data = new FormData();
data.append('_token',_token);
data.append('_user',_user);
data.append('_post',_post);
$.ajax({
type:"POST",
method:"POST",
url:"post_up",
data:data,
processData: false,
contentType: false,
success: function(data){
alert(data);
}
});
}); });</script>
你必须在 ajax url param 中传递正确的 url
...$(document).ready(function(){
//pour vote up
$('#post_up').submit(function(e){
e.preventDefault();
var _post = $('#_post').val();
var _user = $('#_user').val();
var _token = $('input[name="_token"]').val();
var data = new FormData();
data.append('_token',_token);
data.append('_user',_user);
data.append('_post',_post);
$.ajax({
type:"POST",
method:"POST",
url:"/post/post_up",
data:data,
processData: false,
contentType: false,
success: function(data){
alert(data);
}
});
}); });