我正在构建一个用户可以上传项目的应用程序。我正在实现一个用户可以“喜欢/不喜欢”其他项目的系统。我正在尝试使用AJAX调用来保存喜欢。用户可以在项目的详细信息页面上喜欢项目(/ projects / {id})
我有一个表用户,项目和喜欢。我的计划是将喜欢的表保存在喜欢的表中,这样一条记录看起来像这样:id,user_id,project_id。在将来,我可以进行COUNT查询并找出每个项目有多少喜欢等等。
当我点击“赞”按钮时没有任何反应我没有发现任何错误,没有任何反应。
我的档案: routes.php文件
Route::get('/', 'LikeController@index');
Route::post('projects/{id}', 'LikeController@like');
LikeController.php:
public function like()
{
if(Request::ajax()) {
$data = Input::all();
print_r($data);die;
}
}
我的观点:show.blade.php
{!! Form::open(array('url'=>'projects/'.$project->id.'/like','method'=>'POST', 'id'=>'myform')) !!}
{!! Form::button('Like', array('class'=>'send-btn')) !!}
{!! Form::close() !!}
我的AJAX电话
<script type="text/javascript">
$(document).ready(function(){
$('.send-btn').click(function(){
$.ajax({
url: 'projects',
type: "post",
data: {'user_id': $('input[name=user_id]').val(), 'project_id': $('input[name=project_id]').val()},
success: function(data){
alert(data);
}
});
});
});
</script>
答案 0 :(得分:0)
在您的ajax功能中,您有一个选项url: 'projects'
。这意味着您的ajax调用将被发送到相对projects
路径。要解决此问题,请将其更改为url: '/projects'
。
此外,您的路线还包含项目projects/{id}
的ID,因此您必须将其添加到您的ajax呼叫选项中。
$('.send-btn').click(function(){
$.ajax({
url: $(this).parent().attr('action'),
type: "post",
data: {'user_id': $('input[name=user_id]').val(), 'project_id': $('input[name=project_id]').val()},
success: function(data){
alert(data);
}
});
});
答案 1 :(得分:0)
根据您的表单操作,您需要更改路线,
喜欢这个。
Route::post('projects/{id}/like', 'LikeController@like');
而不是这个
Route::post('projects/{id}', 'LikeController@like');
答案 2 :(得分:0)
如果要发送AJAX请求,当您提交表单时,应该阻止默认事件,然后发出请求,如下所示:
$('#form-id').on('submit', function(e) {
e.preventDefault(); //stops the form from being submited the normal way.
$.ajax({
url: 'projects',
type: "post",
data: {'user_id': $('input[name=user_id]').val(), 'project_id': $('input[name=project_id]').val()}
})
.done(function(response) {
//handle response on success
})
.fail(function(xhr) {
//handle failed request
});
});
您还需要将url更改为正确的路径,即在routes.php文件中设置的方式。