javascript - yii2 中的 Yii2 Ajax 请求

标签 javascript php jquery ajax yii2

通过在 Yii2 中使用 kartik select2 插件,我尝试为国家和州创建依赖关系下拉列表。

国家和州的表单字段:

$url = yii\helpers\Url::toRoute('op-client/lists');

$this->registerJs($this->render('script.js'), \yii\web\VIEW::POS_READY);


$form->field($model, 'country_id')->widget(Select2::classname(), [
                                    'data' => $countryData,
                                    'language' => 'en',
                                    'options' => ['placeholder' => 'Select'],
                                    'pluginOptions' => [
                                        'allowClear' => true,
                                    ],
                                    'pluginEvents' =>
                                    [
                                        'change' => 'function() 
                                          { 
                                              getstate
                                              (
                                                $("#select2-opclient-country_id-container").val(),
                                                 "'.$url.'"
                                              )
                                          }',
                                    ],
                                ]).'


                                $form->field($model, 'states_id')->widget(Select2::classname(), [
                                    'data' => $statesData,
                                    'language' => 'en',
                                    'options' => ['placeholder' => 'Select'],
                                    'pluginOptions' => [
                                        'allowClear' => true,
                                    ],

                                ]).'

脚本.js

function getstate($countryid,url)
{
    //console.log(startdate + enddate);
 var csrfToken = $('meta[name="csrf-token"]').attr("content");

    $.ajax({
        type:"POST",
        cache:false,
        url:url,
        data:{countryid:countryid, _crsf:csrfToken},
        success:function(data){
            $("#select2-opclient-states_id-container").val(data);
        },
    })
}

Controller :

public function actionLists()
    {
        $request = Yii::$app->request;

        $country = $request->post('countryid');

        $countStates = OpStates::find()
                        ->where(['country_id' => $country])
                        ->count();

        $states = OpStates::find()
                        ->where(['country_id' =>$country])
                        ->all();

        if($countStates > 0)
        {
            foreach($states as $state){
                echo "<option value='".$state->id."'>".$state->state_name."</option>";
            }
        }
        else
        {
            echo "<option></option>";
        }
    } 

当我运行该程序时,它显示错误“Uncaught ReferenceError:未定义countryid”。 但我想我已经将 Countryid 传递给了它?我哪里做错了?

任何帮助/建议将不胜感激。谢谢

最佳答案

请检查下面的代码,我认为您在country_id变量名称中犯了一些小错误。

public function actionLists()
    {
        $request = Yii::$app->request;

        $country = $request->post('country_id');

        $countStates = OpStates::find()
                        ->where(['country_id' => $country])
                        ->count();

        $states = OpStates::find()
                        ->where(['country_id' =>$country])
                        ->all();

        if($countStates > 0)
        {
            foreach($states as $state){
                echo "<option value='".$state->id."'>".$state->state_name."</option>";
            }
        }
        else
        {
            echo "<option></option>";
        }
    } 

这里

function getstate(countryid,url)
{
    //console.log(startdate + enddate);
 var csrfToken = $('meta[name="csrf-token"]').attr("content");

    $.ajax({
        type:"POST",
        cache:false,
        url:url,
        data:{countryid:countryid, _crsf:csrfToken},
        success:function(data){
            $("#select2-opclient-states_id-container").val(data);
        },
    })
}

它将解决您的问题。

关于javascript - yii2 中的 Yii2 Ajax 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43860471/

相关文章:

javascript - 如何将新对象插入状态而不删除 React 中以前的值

javascript - 不使用 JQUERY 将脚本 append 到 DOM

php - Mysql varchar 字段的数字不能很好地排序

javascript - x 轴上的 float 阈值

JavaScript setTimeout 不起作用

javascript - 如何使用 jquery 获取表中下一个 tr 的 ID?

javascript - 创建多个子对象时,Sequelize 获取父引用

javascript - 需要 WebView 的帮助

PHP 简单 HTML DOM - 在 <td> 标签内获取文本

javascript - Laravel - 如何重用模态代码并根据按钮点击打开不同的模态