无法通过 xhr 请求将 post 参数传递给 yii2 控制器

乔瓦兹

鉴于我的项目,我正在向 yii2 控制器发出 xhr 请求

在我看来,请求的结构是这样的

var xhr = new XMLHttpRequest();

xhr.open('POST', '$urlToController', true);
xhr.setRequestHeader("Content-type","application/json");                
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");

xhr.onreadystatechange = function () {
     if(xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) {
           console.log(xhr.responseText);
     }
};

// Print on console first
console.log({ id: JSON.stringify($('#grid').yiiGridView('getSelectedRows')), _csrf : csrfToken}); 


xhr.send({ id: JSON.stringify($('#grid').yiiGridView('getSelectedRows')), _csrf : csrfToken}});

这是我的控制器:

public function actionTargetController() {

    if(Yii::$app->request->isAjax) {

        Yii::$app->response->format = Response::FORMAT_JSON;

        if (Yii::$app->request->isPost) {

            $post = Yii::$app->request->post();
            return $post; // Print $post 
        }
   }
}

当我尝试发送数据时,xhr.send()我在 yii2 控制器中什么也没收到,我得到的响应总是“[]”(空数组)

我也试过用 FormData 对象发送数据,但结果是一样的。

我哪里做错了?预先感谢所有帮助

PS:

_csrf 参数也没有通过,所以我在 beforeAction 方法中禁用了 csrf 验证。

强壮的

更改 mime 类型并更改您发布的数据。

var xhr = new XMLHttpRequest();

xhr.open('POST', '$urlToController', true);
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded"); // <------ other mime type               
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");

xhr.onreadystatechange = function () {
     if(xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) {
           console.log(xhr.responseText);
     }
};

var params = $('#grid').yiiGridView('getSelectedRows')
    .map(function (value) { return "selectedRowIds[]=" + value;  }).join("&");

xhr.send("_csrf=" + csrfToken + (params ? "&" + params : ""));

现在您可以通过以下方式获取操作中发布的数据:

$post = Yii::$app->request->post('selectedRowIds');

你得到一个整数数组。

您也可以为此使用 jQuery,因为您已经在使用它了。容易得多:

var params = {selectedRowIds: $('#grid').yiiGridView('getSelectedRows'), _csrf : csrfToken};
$.post('$urlToController', params).done(function(data) {
    console.log(data);
}) 

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

POST参数未通过API请求传递给控制器

来自分类Dev

使用jQuery将yii2 ajax请求中的两个参数传递给控制器

来自分类Dev

Ionic Popover无法将参数传递给控制器

来自分类Dev

Spring控制器无法将参数传递给jsp

来自分类Dev

Laravel-通过POST将输入值传递给控制器

来自分类Dev

通过 POST 请求将参数传递给 javascript 文件

来自分类Dev

yii2 无法在控制器中获取视图传递的参数

来自分类Dev

如何在YII2中将参数从控制器传递到布局

来自分类Dev

将Null作为参数传递给控制器POST方法

来自分类Dev

将Null作为参数传递给控制器POST方法

来自分类Dev

将jQuery post中的参数传递给控制器中的方法

来自分类Dev

将参数传递给控制器

来自分类Dev

通过action()指定Yii2控制器中的动作请求动词

来自分类Dev

如何通过GET将参数值数组传递给控制器操作

来自分类Dev

如何通过jQuery回调将参数传递给控制器操作方法?

来自分类Dev

AngularJS:如何通过ng-href将多个参数传递给控制器?

来自分类Dev

Laravel路由:如何将参数传递给控制器(而不是通过URL)?

来自分类Dev

通过JavaScript中的Ajax调用将数组作为参数传递给控制器

来自分类Dev

通过ajax调用将参数传递给控制器中的方法

来自分类Dev

通过重定向将内部参数传递给控制器功能

来自分类Dev

通过单击按钮将参数传递给其他控制器

来自分类Dev

通过 Ajax 将强类型视图模型作为参数传递给控制器

来自分类Dev

通过单击按钮将参数传递给 Express 控制器

来自分类Dev

Laravel 使用控制器参数与请求将数据传递给控制器

来自分类Dev

Symfony2如何将URI的参数传递给控制器的Action方法?

来自分类Dev

Symfony2如何将URI的参数传递给控制器的Action方法?

来自分类Dev

将控制器参数传递给模板symfony2

来自分类Dev

如何将 2 个参数传递给管理控制器上的中间件

来自分类Dev

通过刀片将权限从控制器传递给javascript

Related 相关文章

  1. 1

    POST参数未通过API请求传递给控制器

  2. 2

    使用jQuery将yii2 ajax请求中的两个参数传递给控制器

  3. 3

    Ionic Popover无法将参数传递给控制器

  4. 4

    Spring控制器无法将参数传递给jsp

  5. 5

    Laravel-通过POST将输入值传递给控制器

  6. 6

    通过 POST 请求将参数传递给 javascript 文件

  7. 7

    yii2 无法在控制器中获取视图传递的参数

  8. 8

    如何在YII2中将参数从控制器传递到布局

  9. 9

    将Null作为参数传递给控制器POST方法

  10. 10

    将Null作为参数传递给控制器POST方法

  11. 11

    将jQuery post中的参数传递给控制器中的方法

  12. 12

    将参数传递给控制器

  13. 13

    通过action()指定Yii2控制器中的动作请求动词

  14. 14

    如何通过GET将参数值数组传递给控制器操作

  15. 15

    如何通过jQuery回调将参数传递给控制器操作方法?

  16. 16

    AngularJS:如何通过ng-href将多个参数传递给控制器?

  17. 17

    Laravel路由:如何将参数传递给控制器(而不是通过URL)?

  18. 18

    通过JavaScript中的Ajax调用将数组作为参数传递给控制器

  19. 19

    通过ajax调用将参数传递给控制器中的方法

  20. 20

    通过重定向将内部参数传递给控制器功能

  21. 21

    通过单击按钮将参数传递给其他控制器

  22. 22

    通过 Ajax 将强类型视图模型作为参数传递给控制器

  23. 23

    通过单击按钮将参数传递给 Express 控制器

  24. 24

    Laravel 使用控制器参数与请求将数据传递给控制器

  25. 25

    Symfony2如何将URI的参数传递给控制器的Action方法?

  26. 26

    Symfony2如何将URI的参数传递给控制器的Action方法?

  27. 27

    将控制器参数传递给模板symfony2

  28. 28

    如何将 2 个参数传递给管理控制器上的中间件

  29. 29

    通过刀片将权限从控制器传递给javascript

热门标签

归档