【问题标题】:Yii2 pass big array from one view to another controllerYii2 将大数组从一个视图传递到另一个控制器
【发布时间】:2016-01-18 17:25:33
【问题描述】:

我的数组很大,是控制器的结果

public function actionAaaa()
    {
        //somoethig, effect array
        return $this->render('test', [
        'array' => $array
        ]);
    }

例如在视图中:

<pre>
    <?print_r($array);
</pre>

现在我想将这个数组从视图传递到另一个动作控制器。 我不知道该怎么做。 我试试:

<button type="submit" id="test" class="btn btn-lg btn-primary">Test</button>

<script>
    $(document).ready(function () {

        $("#test").click(function () {
            var variable = <?=$array?>;
            //alert($(this).attr('id'));
            $.ajax({
                type: "POST",
                url: 'controller/action',
                data: variable,
                success: function (data) {
                    alert("success!");
                }
            });
        });
    });

</script>

但是当我尝试使用下一个控制器时,我什么也没看到:

public function actionBBBB()
    {
        $request = Yii::$app->request;
        $tablica = $request->post();

        echo 'Tablica POST';
        echo '<br />';
        echo '<pre>';
        print_r($tablica);
        echo '</pre>';
        echo '<br />';
        echo 'XXXxxxXXX';
    }

有什么想法吗?

【问题讨论】:

  • 您在 AJAX 调用中使用的 url 是 controller/action,但您的操作名为 actionBBBB。这可能是您什么都看不到的一个原因。尝试使用controller/b-b-b-b,而不是controller/action。为什么您的操作首先命名为actionBBBB?尝试使用更具描述性的名称,例如 actionDisplayBigArray,并将您的 actionAaaa 命名为 actionGenerateBigArray

标签: php yii2 parameter-passing


【解决方案1】:

您不能像那样发布整个数组。但是,您可以对其进行序列化:

var variable = <?serialize($array);?>

那你以后可以unserialize它。

这只是一种选择。有人会说它不好。大概是吧。你也可以使用SESSION

【讨论】:

    猜你喜欢
    • 2016-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多