Javascript Laravel表单select onChange值通过AJAX保存到数据库
我在controller(FocalController.php)中有一个由以下代码生成的下拉列表: 在视图中,我有以下块生成下拉列表:Javascript Laravel表单select onChange值通过AJAX保存到数据库,javascript,php,jquery,ajax,laravel,Javascript,Php,Jquery,Ajax,Laravel,我在controller(FocalController.php)中有一个由以下代码生成的下拉列表: 在视图中,我有以下块生成下拉列表: {!! Form::select('focal', [''=>'select focal']+ collect($focals)->toArray() , $project_focal, array('class' => 'form-control','onchange'=>'changeFocal(this, '.$project-&
{!! Form::select('focal', [''=>'select focal']+ collect($focals)->toArray() , $project_focal, array('class' => 'form-control','onchange'=>'changeFocal(this, '.$project->id.')' ))!!}
我想在更改时提交下拉值,并使用AJAX保存该值
我提交表单的ajax如下所示:
function changeFocal(e,project_id) {
var focal_id = $("#e").val();
var project_id = $("#project_id").val();
$.ajax({
type: "PUT",
data: "focal_id=" + e + "&project_id=" + project_id,
url: "{{ URL::to('admin/focal') }}",
success:function(data){
console.log(data);$("#msg").html("New Focal Assigned.");
}
});
}
我的路线是:
Route::post('admin/focal/','FocalController@saveFocal');
myFocalController
中的saveFocal
功能是:
public function saveFocal(Request $request){
$focal_id = $request->focal_id;
$project_id = $request->project_id;
$project = Project::find('idea_id', $project_id)
->update([
'focal' => $focal_id,
'updated_at' => \Carbon\Carbon::now()->toDateTimeString(),
]);
@\App\Common::createAccessLog($project->focal, "Update Project Focal for Project#" . $project->idea_id . "(" . $project->name . ")");
return view('admin/focal');
}
我在控制台中遇到以下错误:
有谁能告诉我我做错了什么,以及如何使用ajax将所选数据保存到数据库中,并附上一条成功消息。使用POST而不是PUT 还要确保您发送请求的路由有效且存在 以下是一些更正:
function changeFocal(e,project_id) {
var focal_id = $(e).val(); //correction
var project_id = $("#project_id").val();
$.ajax({
type: "PUT",
data: "focal_id=" + focal_id + "&project_id=" + project_id, //correction
url: "{{ URL::to('admin/focal') }}",
success:function(data){
console.log(data);$("#msg").html("New Focal Assigned.");
}
});
}
Ude
where
子句改为find
Project::where(
find
在主键上工作尝试使用post
代替put
并为csrf添加\u令牌
,它抛出“500(内部服务器错误)”您的路由设置为post
路由,但您的ajax方法正在提交put
请求?另外,您上面提到的500错误是什么?我将ajax方法更正为“post”,并添加了“csrf”标记。现在ajax调用完成并显示成功消息。但是数据没有保存在数据库中!我将ajax方法更正为“post”,并添加了“csrf”标记。现在ajax调用完成并显示成功消息。但是数据没有保存在数据库中!console.log项目id并查看它是否选择了正确的id。函数changeFocal(e,project_id){var focal_id=$(e.val();//correction var project_id=$(“#project_id”).val();console.log(project_id)表示“未定义”。因此项目id没有到达ajax调用?是的,您需要找到在请求中传递项目id的正确方法
Project::where(