Php Laravel5.1使用ajax调用在数据库中保存内容
我正在构建一个用户可以上传项目的应用程序。我正在实施一个系统,用户可以“喜欢/不喜欢”其他项目。我正在尝试使用AJAX调用来保存喜欢的内容。用户可以在项目的详细信息页面上喜欢项目(/projects/{id}) 我有一个表用户,项目和喜欢。我的计划是在likes表中保存likes,这样一个记录看起来像这样:id、user\u id、project\u id。将来我可以进行计数查询,找出每个项目有多少likes,等等 由于某种原因,当我单击like按钮时,我的应用程序会被卡住并一直加载,直到崩溃 我的文件: Ajax调用Php Laravel5.1使用ajax调用在数据库中保存内容,php,jquery,mysql,ajax,laravel,Php,Jquery,Mysql,Ajax,Laravel,我正在构建一个用户可以上传项目的应用程序。我正在实施一个系统,用户可以“喜欢/不喜欢”其他项目。我正在尝试使用AJAX调用来保存喜欢的内容。用户可以在项目的详细信息页面上喜欢项目(/projects/{id}) 我有一个表用户,项目和喜欢。我的计划是在likes表中保存likes,这样一个记录看起来像这样:id、user\u id、project\u id。将来我可以进行计数查询,找出每个项目有多少likes,等等 由于某种原因,当我单击like按钮时,我的应用程序会被卡住并一直加载,直到崩溃
$(document).ready(function(){
console.log("js loaded");
$('#likeform').on('submit', function(e) {
console.log("like submitted");
e.preventDefault();
$.ajax({
url: $(this).parent().attr('action'),
type: "post",
data: {'_token': token, 'user_id': $('input[name=user_id]').val(), 'project_id': $('input[name=project_id]').val()},
success: function(data){
alert(data);
}
})
});
});
我的表格
{!! Form::open(array('url'=>'projects/'.$project->id.'/like','method'=>'POST', 'id'=>'likeform')) !!}
<input type="hidden" id="token" value="{{ csrf_token() }}">
{!! Form::Submit('Like', array('class'=>'send-btn')) !!}
{!! Form::close() !!}
LikeControl中的My like函数:
public function like()
{
if(Request::ajax()) {
$data = Input::all();
print_r($data);die;
}
}
卡住并继续加载,直到崩溃
这一部分可能与ajaxpost期望某种响应有关,但您在控制器中根本没有响应。试试像这样的东西
public function like()
{
if(Request::ajax()) {
$data = Input::all();
return Response::json([
'error' => false,
'insertedData' => $data
], 200);
}
}
请记住在控制器中使用响应。现在您正在向ajax调用返回一些内容,您应该能够访问$data
success: function(data){
alert(data.insertedData);
}
你是否也有同样的行为?如果没有,您可以继续执行实际的db插入
卡住并继续加载,直到崩溃
这一部分可能与ajaxpost期望某种响应有关,但您在控制器中根本没有响应。试试像这样的东西
public function like()
{
if(Request::ajax()) {
$data = Input::all();
return Response::json([
'error' => false,
'insertedData' => $data
], 200);
}
}
请记住在控制器中使用响应。现在您正在向ajax调用返回一些内容,您应该能够访问$data
success: function(data){
alert(data.insertedData);
}
你是否也有同样的行为?如果没有,您可以继续执行实际的db插入 浏览器控制台在加载时是否有提示?你查过你的日志了吗?提供任何类型的错误都将大大提高您获得正确答案的机会。我的控制台中没有任何内容。我一点错误都没有,这有点烦人,奇怪。无论如何,我没有测试您的代码,但是您正在尝试从您的表单中检索
action
属性,而它没有属性。您确实设置了一个url
。我不确定这是您想要的,但在我看来值得一试。旁注:使用form
facade构建表单将自动设置一个隐藏的token
字段,因此实际上不需要在表单中添加第二个。哦,好的,我想知道为什么有两个隐藏的token字段。现在我知道:)action
vsurl
简直是胡说八道。我的错。很奇怪,你没有收到任何错误,至少在服务器日志中是这样。浏览器控制台在加载时有没有说什么?你查过你的日志了吗?提供任何类型的错误都将大大提高您获得正确答案的机会。我的控制台中没有任何内容。我一点错误都没有,这有点烦人,奇怪。无论如何,我没有测试您的代码,但是您正在尝试从您的表单中检索action
属性,而它没有属性。您确实设置了一个url
。我不确定这是您想要的,但在我看来值得一试。旁注:使用form
facade构建表单将自动设置一个隐藏的token
字段,因此实际上不需要在表单中添加第二个。哦,好的,我想知道为什么有两个隐藏的token字段。现在我知道:)action
vsurl
简直是胡说八道。我的错。很奇怪,你没有收到任何错误,至少在服务器日志中是这样。我已经尝试了你的答案,不幸的是,我仍然在经历同样的问题behaviour@MoussaChaabar好吧,那就更奇怪了。您应该尝试在开发人员模式下测试代码,并尝试了解哪里/谁失败了。ajax调用中的几个断点是一个好的开始。我仍然不明白为什么你没有得到任何错误。您是否可以尝试在ajax中设置错误回调,类似错误:函数(数据){console.log(数据);}
。至少这应该告诉我们ajax调用是否真的执行了。我已经尝试了你的答案,不幸的是,我仍然在经历同样的问题behaviour@MoussaChaabar好吧,那就更奇怪了。您应该尝试在开发人员模式下测试代码,并尝试了解哪里/谁失败了。ajax调用中的几个断点是一个好的开始。我仍然不明白为什么你没有得到任何错误。您是否可以尝试在ajax中设置错误回调,类似错误:函数(数据){console.log(数据);}
。至少这应该告诉我们是否实际执行了ajax调用。