我有一个DropDown列表。我已经编写了代码,但它没有工作。请帮我解决一下:
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)
}'
]
);
此外,我想发送所选数据,并且不知道在哪里写。
在Controller中我有这个动作
public function actionA_action() {
$data = "TTT";
return $data;
}
现在,当我在DropDown列表中选择某些内容时,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 }
最终更新
我已在此代码的最后一个字符串上添加了一个结束括号,其中有两个正在关闭,如您所见,这就是问题所在。 Semicolumn也将是一个优势,但我已经测试过代码可以正常工作。问题在于结束。
'onchange'=>'$.post( "'.Yii::$app->urlManager->createUrl(["users/A_action"]).'",function(data){
$("#test_div").html( data );
})']);
答案 0 :(得分:6)
我相信你有一个javascript错误。你其实也应该有很多。
你这样做
'onchange' => '$.post(Yii::$app->urlManager->createUrl . "users/A_action"), function(data) {
$("#test_div").html(data)
}'
您实际上并未调用Yii :: $ app-&gt; urlManager-&gt; createUrl您只是将其用作字符串。
你可能需要像
这样的东西...
['onchange' => '$.post("'.Yii::$app->urlManager->createUrl(["users/A_action"]).'", function( data ) {
$("#test_div").html( data );
})']);
答案 1 :(得分:0)
简单地添加一个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)
}
});
});");?>
答案 2 :(得分:0)
只需浏览这些代码,您就可以了解正常工作
$(document).ready(function () {
$(document.body).on('change', 'yourid', function () {
var val = $('yourid': selected').val();
if(val == 'I' ) {
something
} else if(val == 'B' ){
something
}
});
});