2016-11-30 61 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); 

我不知道如何解析這一部分:這是一個PHP數組

valInt是一個js varibale

我認爲這是正確的,但我

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

$ IDS m得到解析錯誤

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

如果我寫"'.$ids[40].'"它很好,沒有錯誤。

Thi處於site/index.php視圖中,與Yii2一起工作。

感謝您的幫助!

+0

您無法通過JS你輸出回服務器,並期望在不使用AJAX的響應。或者,你可以把json編碼的$ ids版本作爲一個var放在JS中,然後索引JS版本的$ id ... – Malovich

+0

你可以發佈** $ ids **,這樣它就是一個javascript數組客戶端,然後你可以用** valInt ** – JonSG

+0

來索引它,但是「'。$ ids [40]。」「它的工作正常或不相關? – Rugleh

回答

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

哦,這太好了,非常感謝! – Rugleh