从JavaScript传递并获取ID到PHP控制器

时间:2016-03-03 06:45:59

标签: javascript php jquery yii frontend

我有一个内联可编辑表(我为此使用了Tabledit)并且每行都有一个ID,ID应该传递给控制器​​操作(Yii2),以便我将编辑后的数据保存到数据库中。这是我的js文件中的Tabledit代码:

Test.class.getClassLoader().getResourceAsStream("test.json")

我希望在保存内联编辑后,它会指向指定的网址{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 += '<tr id="' + file[i].assetID + '">'; messageHtml += '<td style="display:none;" id="' + file[i].assetID + '">' + file[i].assetID + '</td>'; messageHtml += '<td>' + file[i].name + '</td>'; messageHtml += '<td>' + type + '</td>'; messageHtml += '<td>' + file[i].size + " KB" + '</td>'; messageHtml += '<td><input type="text" class="form-control" placeholder="Tag"></td>'; messageHtml += '<td><input type="text" class="form-control" placeholder="Description"></td>'; messageHtml += '</tr>'; } 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); } }); urlID,其中save-inline-edit是我的控制器中的动作函数 - public function actionSaveInlineEdit($id){...})检查元素(保存后),它给了我这个错误: enter image description here

然后我放置了一个console.log来查看错误详细信息,我得到了这个: enter image description here

  

“错误请求(#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传递给控制器​​?我希望你明白这一点。如果您有任何疑问,请告诉我。如果您对实施有其他想法,请告诉我。

1 个答案:

答案 0 :(得分:1)

当您将id作为file.assetID放入代码的开头并使用文件[0]获取id .assetID

请使用file.assetID获取网址中的ID。

由于