我正在研究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 );
});
']
我无法弄清楚原因。 提前谢谢。
答案 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而不需要编码。