2016-11-30 10 views
0

どうすればよいですか?PHPの解析配列内にJS変数を持つJSファイル内のPHP配列を解析する-YII2

$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のvaribale

あるのです私はこれが正しいと思ったが、私は」解析エラーが発生する

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

私が"'.$ids[40].'"と書いたら、それは素晴らしいとエラーなしで動作します。

Thiはsite/index.phpのビューにあり、Yii2と連携しています。

ありがとうございました!

+0

を試してみてください。代わりに、$ idsのjsonでエンコードされたバージョンをJSのvarに入れ、$ idsのJSバージョンをインデックスすることができます。 – Malovich

+0

** $ ids **を発行して、クライアントは** valInt ** – JonSG

+0

でインデックスを作成できますが、 "'。$ ids [40]。" "うまく動作しているか、関連していませんか? – Rugleh

答えて

1

は、あなたがサーバーに戻って出力しているJS渡すとAJAXを使用せずに応答を期待することはできません。この

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

これは大変です、ありがとうございます! – Rugleh

関連する問題