URL编码在Yii2和jQuery中不起作用

时间:2018-06-16 07:52:55

标签: jquery yii2

我正在研究Yii2框架并使用jQuery $.post()方法从URL获取数据。 从jQuery发送的URL如下:

http://localhost/basic/web/index.php?r=visitor%2Fcenter%26location_id%3D6

正在提供404 Page Not found Error

同时,当我使用浏览器中的以下网址时使用&和=,

http://localhost/basic/web/index.php?r=visitor%2Fcenter&location_id=6

我能够得到如下结果:

c_center4
c_center3
c_center2
c_center1

我在视图中的jQuery代码看起来像这样。

[
         'onchange' => '
                console.log("'.Yii::$app->urlManager->createUrl('visitor/center&location_id=').'" +$(this).val());
                $.post( "'.Yii::$app->urlManager->createUrl('visitor/center&location_id=').'"+$(this).val(), function( data ) {
                  $( "select#visitor_center" ).html( data );
                });
        ']

我无法弄清楚原因。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

您不应该以这种方式传递查询字符串。如果将字符串传递给createUrl(),它将被视为路由,并且所有特殊字符都将被编码(因为visitor/center&location_id=应被视为r param的值,因此需要对其进行编码) 。

您可以尝试这样的事情:

[
    'onchange' => '
        $url = "' . Yii::$app->urlManager->createUrl(['visitor/center', 'location_id' => '']) . '" + $(this).val(); 
        console.log($url);',
]

这应该分别生成路由和param而不需要编码。