Yii2:将数据发送到同一页面不能正常工作

时间:2016-04-07 13:04:28

标签: javascript php jquery ajax yii2

我正在使用Yii2-advanced-app。我想将我选择的下拉列表的值发送到同一页面上的php代码(显示带复选框的列表)。请参阅以下图片以供参考(实际上我想要的是这样) -

Please see this image for reference

但是,从下拉列表中选择一些元素后,我得到了结果,但是在该特定部分中有整个html页面。这是Snap供参考 -

Here is the Snap for reference

我不明白为什么我要将整个页面作为回应。

我为此编写了以下代码 -

下拉列表

<?= $form->field($countries[0], 'id')->dropDownList(
    ArrayHelper::map($countries, 'phonecode', 'name'),
    [
    'prompt' => 'Select Country',
    'onchange' => '
    var id;
    jQuery.ajax({
        type: "POST",
        data: {
            "id": $(this).val(), 
        },
        // url: "",
        success: function(data){
            jQuery(".tobechanged").html(data);
            alert(data);
        }
    });'
    ])->label(false);
    ?>

我各自的div

<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12 tobechanged" style="max-height: 400px; background: white; overflow: auto;">
    <ul class="list-unstyled" id="chkall">
        <?php
        if(isset($contacts)) {
            $contacts = $contacts;
                            // print_r($contacts[0]['cust_country_code']);exit();
            foreach ($contacts as $contact) {
                if(isset($_POST['id'])) {
                    if($contact['cust_country_code'] == $_POST['id']) {
                        echo '<li>
                        <div class="checkbox" id="checkboxes">
                            <label><input type="checkbox" value="'.$contact['cust_id'].'" id="'.$contact['cust_id'].'">'.$contact['cust_fname'].' '.$contact['cust_lname'].'</label>
                        </div>
                    </li>';
                }
            } else {
                echo '<li>
                <div class="checkbox" id="checkboxes">
                    <label><input type="checkbox" value="'.$contact['cust_id'].'" id="'.$contact['cust_id'].'">'.$contact['cust_fname'].' '.$contact['cust_lname'].'</label>
                </div>
            </li>';
        }
    }
}
?>
</ul>
</div>

即使我们显示“Hello”而不是复选框代码,它也不起作用。就像这样 -

<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12 tobechanged" style="max-height: 400px; background: white; overflow: auto;">
    Hello
</div>

所以,请帮我避免不必要的HTML。

我正在接受这样的响应

Response

1 个答案:

答案 0 :(得分:1)

您可以在控制器操作上使用renderPartial进行Ajax调用。

查看详情here