[英]Yii2 Ajax .post to controller from dropdownList of view and some action upon receiving data
我有一個下拉列表。 我已經編寫了代碼,但是沒有用。 請幫助我修復它:
echo $form->field($model, 'Adrop')->dropDownList(
[
'' => 'Please Choose',
'1' => 'item 1',
'2' => 'item 2'
],
[
'onchange' => '$.post(Yii::$app->urlManager->createUrl . "users/A_action"), function(data) {
$("#test_div").html(data)
}'
]
);
我也想發送選定的數據,不知道在哪里寫。
在控制器中,我有此操作
public function actionA_action() {
$data = "TTT";
return $data;
}
現在,當我在“ DropDown”列表中選擇某項時, test_div
沒有任何test_div
:(
更新感謝Mihai P.現在我正在使用此代碼
<?php
echo $form->field($model, 'Adrop')->dropDownList(
[''=>'Please Choose','1'=>'item 1','2'=>'item 2'],
[
'onchange'=>'$.post( "'.Yii::$app->urlManager->createUrl(["users/A_action"]).'",function(data){
$("#test_div").html( data )
}']);
?>
HTML通過以下方式形成
<select id="A-adrop" class="form-control" name="A[Adrop]" onchange="$.post( "/users/A_action",function(){
$("#test_div").html( data )
}">
<option value="">Please Choose</option>
<option value="1">item 1</option>
<option value="2">item 2</option>
</select>
但是當我在調試中選擇某些內容時,該字符串會突出顯示
<option value="2">item 2</option>
而且有一個錯誤說
Uncaught SyntaxError: Unexpected token }
最終更新
我在此代碼的最后一個字符串上添加了一個右括號,如您所見,其中有兩個現在正在關閉,這就是問題所在。 分號也將是一個加號,但我測試過的代碼在沒有它的情況下可以正常工作。 問題在於右括號。
'onchange'=>'$.post( "'.Yii::$app->urlManager->createUrl(["users/A_action"]).'",function(data){
$("#test_div").html( data );
})']);
好吧,我確定您遇到了JavaScript錯誤。 實際上,您也應該有很多。
你正在這樣做
'onchange' => '$.post(Yii::$app->urlManager->createUrl . "users/A_action"), function(data) {
$("#test_div").html(data)
}'
您實際上並沒有在調用Yii :: $ app-> urlManager-> createUrl,而是將其用作字符串。
您可能需要類似
...
['onchange' => '$.post("'.Yii::$app->urlManager->createUrl(["users/A_action"]).'", function( data ) {
$("#test_div").html( data );
})']);
簡單地添加一個JS塊,它就更干凈了:
<?php $this->registerJs("
jQuery(function($){
$('select[name=Adrop]').on('change', function(){
$.post(Yii::$app->urlManager->createUrl . 'users/A_action'),
function(data) {
$('#test_div').html(data)
}
});
});");?>
只需通過這些代碼,您就可以了解其工作原理
$(document).ready(function () {
$(document.body).on('change', 'yourid', function () {
var val = $('yourid': selected').val();
if(val == 'I' ) {
something
} else if(val == 'B' ){
something
}
});
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.