如何使用Yii2从ajax调用填充gridview [英] how to populate gridview from ajax call using Yii2

查看:124
本文介绍了如何使用Yii2从ajax调用填充gridview的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的项目中,我创建了一个搜索框.当我键入一些内容并单击获取信息"按钮时,我会使用ajax调用在控制台窗口中获取所有信息.现在我想在yii2 gridview中填充此数据.数据在每个运行时都会有所不同.我想将此数据提供给gridview的$ dataprovider吗?

In my project, I have created a search box. when I type something and click the button "get info" I get all information in console window using ajax call. now I want to populate this data in yii2 gridview. data will different at every runtime. I want to give this data to $dataprovider of gridview is it possible??

这是代码- CompaniesController.php

here is code- CompaniesController.php

public function actionCompanyinfo(){     

    $text_in_search = $_GET['text_in_search'];
    $left_items_cat = ltrim($_GET['left_items_cat']);

    if($left_items_cat == "Companies"){

         $query = (new \yii\db\Query())
                ->select(['c.name', 'c.id'])
                ->from(['companies as c'])
                ->where('c.name LIKE :query') 
                ->addParams([':query'=>'%'.$text_in_search.'%'])
                ->all(); 

        $response['comapnies_matching'] = $query;
            return \yii\helpers\Json::encode([
        $response
    ]);  

    }
}

companies/index.php

companies/index.php

$form = ActiveForm::begin();
 $typeahead = $form->field($model, 'name')->textInput(['maxlength' => true]);

$getinfobtn = Html::SubmitButton( 'Get info', [ 'class' => 'btn btn-success' , 'id' =>'getinfo']) ;
   ActiveForm::end();  

myjsfile.js

myjsfile.js

$("#getinfo").click(function(){
        var text_in_search = $("#companies-name").val();
        var left_items_cat = $('#left-items li.active').text();
        var url = "index.php?r=companies/companyinfo";

        $.ajax({
        url: url,
        dataType: 'json',
        method: 'GET',
        data: {text_in_search,left_items_cat},
        success: function (data, textStatus, jqXHR) {           
             // $( "#country"+id ).html(data[0].countries);
             console.log(data[0]);
           // **want to show this data in yii2 grid view**
        },
        error: function (jqXHR, textStatus, errorThrown) {
            console.log('An error occured!');
            alert('Error in ajax request');
        }
    });

控制台窗口

comapnies_matching
:
Array(3)
0
:
{name: "ADC Therapeutics Sarl", id: "402"}
1
:
{name: "ADC Therapeutics Sarl", id: "407"}
2
:
{name: "ADC Therapeutics Sarl", id: "412"}

如何在gridview中显示/填充此数据?

how to show/ populate this data in gridview??

推荐答案

CompaniesController.php

CompaniesController.php

public function actionCompanyinfo(){     

$text_in_search = $_GET['text_in_search'];
$left_items_cat = ltrim($_GET['left_items_cat']);

if($left_items_cat == "Companies"){

     $dataProvider= (new \yii\db\Query())
            ->select(['c.name', 'c.id'])
            ->from(['companies as c'])
            ->where('c.name LIKE :query') 
            ->addParams([':query'=>'%'.$text_in_search.'%'])
            ->all(); 

    return $this->renderPartial('gridview', [
        'dataProvider' => $dataProvider,
    ]); 

}}

您需要在gridview.php视图文件中呈现gridview

You need to render the gridview in gridview.php view file

myjsfile.js

myjsfile.js

$("#getinfo").click(function(){
    var text_in_search = $("#companies-name").val();
    var left_items_cat = $('#left-items li.active').text();
    var url = "index.php?r=companies/companyinfo";

    $.ajax({
    url: url,
    method: 'GET',
    data: {text_in_search,left_items_cat},
    success: function (data, textStatus, jqXHR) {           
         //set the ajax response as your html content 
         $('#myDiv').html(data);
    },
    error: function (jqXHR, textStatus, errorThrown) {
        console.log('An error occured!');
        alert('Error in ajax request');
    }
});

这篇关于如何使用Yii2从ajax调用填充gridview的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆