从JavaScript传递并获取ID到PHP控制器
我有一个内联可编辑表(我使用了Tabledit ),每行都有一个ID,ID应传递给控制器操作(Yii2),以便我将编辑后的数据保存到数据库中。 这是我的js文件中的Tabledit代码:
file.assetID = info.response; // the ID for (var i = 0; i < file.length; i++) { // the table if (file[i].type == "image/jpeg") { var type = "photo"; } else if (file[i].type == "video/mp4") { var type = "video"; } messageHtml += ''; messageHtml += '' + file[i].assetID + ' '; messageHtml += '' + file[i].name + ' '; messageHtml += '' + type + ' '; messageHtml += '' + file[i].size + " KB" + ' '; messageHtml += ' '; messageHtml += ' '; messageHtml += ' '; } var urlID = "../save-inline-edit/" + file[0].assetID; // url plus the ID of the row $('#uploader_table').Tabledit({ url: urlID, columns: { identifier: [0, 'id'], editable: [[1, file.name]/*, [3, file.tag], [4, file.description]*/] }, onSuccess: function(data, textStatus, jqXHR) { console.log(data); console.log(textStatus); console.log(jqXHR); }, onFail: function(jqXHR, textStatus, errorThrown) { console.log(file.assetID); console.log(jqXHR); console.log(textStatus); console.log(errorThrown); } });
我希望在save-inline-edit
,它会指向指定的url( urlID
,其中save-inline-edit
是我的控制器中的一个动作函数 – public function actionSaveInlineEdit($id){...}
)检查元素(保存后),它给了我这个错误:
然后我放置了一个console.log
来查看错误详细信息,我得到了这个:
“错误请求(#400):缺少必需参数:id”
这是我的控制器动作:
public function actionSaveInlineEdit($id) { header('Content-Type: application/json'); $assetModel = $this->findModel($id); $input = filter_input_array(INPUT_POST); if ($input['action'] === 'edit') { $assetModel->title = ""; $assetModel->description = ""; $assetModel->save(false); } else if ($input['action'] === 'delete') { $assetModel->status = "deleted"; $assetModel->save(false); } echo json_encode($input); return \yii\helpers\Json::encode([ 'message' => 'success', ]); }
我真的不知道如何解决这个问题。 如何将id传递给控制器? 我希望你明白这一点。 如果您有任何疑问,请告诉我。 如果您对实施有其他想法,请告诉我。
当你将id作为file.assetID放在代码的开头,并使用file [0] .assetID获取id
请使用file.assetID获取url中的id。
谢谢