【问题标题】:Parse a PHP array in a JS file with a JS variable inside the PHP parsed array -YII2使用 PHP 解析数组 -YII2 内的 JS 变量解析 JS 文件中的 PHP 数组
【发布时间】:2016-11-30 21:04:07
【问题描述】:

我应该怎么做?

 $ids = ArrayHelper::map(Tours::find()->select(['pk', 'programa'])->asArray()->all(), 'pk', 'programa');


$this->registerJs('
$("#child1_child2").change(function() {
    var val = $("#child1_child2 option:selected").val();
    valInt = parseInt(val);
    $("#form").attr("action", "programas/" + "'.$ids[.'"valInt"'.].'");
});
', \yii\web\View::POS_END);

我不知道如何解析这部分:

$("#form").attr("action", "programas/" + "'.$ids[.'"valInt"'.].'");

$ids 是一个 php 数组

valInt 是一个 js 变量

我认为这是正确的,但我遇到了解析错误

syntax error, unexpected '.', expecting ']'

如果我写"'.$ids[40].'",它工作得很好并且没有错误。

这是在site/index.php的视图中,与Yii2一起工作。

感谢您的帮助!

【问题讨论】:

  • 在不使用 AJAX 的情况下,您无法将输出的 JS 传递回服务器并期望得到响应。或者,您可以将 json 编码版本的 $ids 作为 var 放入 JS 中,然后索引 $ids 的 JS 版本...
  • 您可能会发出 $ids 以便它是客户端上的 javascript 数组,然后您可以使用 valInt 对其进行索引
  • 但是 "'.$ids[40].'" 工作正常还是不相关?
  • 它工作正常,因为 $ids[40] 被设置为一个 php 数组。问题是您试图在将静态生成的 JS 发送到浏览器之前使其成为动态的。那不会飞。

标签: javascript php jquery yii yii2


【解决方案1】:

试试这个

$ids = ArrayHelper::map(Tours::find()->select(['pk', 'programa'])->asArray()->all(), 'pk', 'programa');


$this->registerJs('
$("#child1_child2").change(function() {
    var val = $("#child1_child2 option:selected").val();
    valInt = parseInt(val);
    var $ids = '. json_encode($ids) .';
    $("#form").attr("action", "programas/" + $ids[valInt]);
});
', \yii\web\View::POS_END);

【讨论】:

    猜你喜欢
    • 2015-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-25
    • 1970-01-01
    相关资源
    最近更新 更多