使用PHP解析数组-YII2中的JS变量解析JS文件中的PHP数组

我该怎么做? </ p>

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

$ this-&gt; 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);
</ code> </ pre>

我不知道如何解析这部分:</ p>

  $(“#form”)。attr(“action”,“programas /”+“'。$ ids [。  '“valInt”'。]。'“); 
</ code> </ pre>

$ ids它是一个php数组</ p>

valInt是一个js varibale </ p>

我认为这是正确的但我得到解析错误</ p>

 语法错误,意外'。',期待']'

</ code> </ pre>

如果我写“'。$ ids [40]。”“</ code>它运作良好而且没有错误。</ p>

这是在site / index.php的视图中,使用Yii2。</ p>

感谢您的帮助!</ p>
</ div>

展开原文

原文

How should I do this?

 $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);

I dont know how to parse this part:

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

$ids it's a php array

valInt is a js varibale

I thought this was correct but I'm getting parse error

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

if I write "'.$ids[40].'" it works great and with no errors.

Thi is in the view of site/index.php, working with Yii2.

Thanks for the help!

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

1个回答



试试这个</ p>

  $ ids = ArrayHelper :: map(Tours :: find  () - &gt;选择(['pk','programa']) - &gt; asArray() - &gt; all(),'pk','programa'); 

$ this-&gt; registerJs('
$(“#child1_child2”)。change(function(){
var var = $(“#child1_child2 option:selected”)。val();
valInt = parseInt(val);
var $ ids ='。json_encode($ ids)。';
$(“#form”)。attr(“action”,“programas /”+ $ ids [valInt]);
});
' ,\ yii \ web \ View :: POS_END);
</ code> </ pre>
</ div>

展开原文

原文

Try this

$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);

dongtang1944
dongtang1944 哦,这很棒,非常感谢!
接近 4 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐