Yii:呈现部分并以JSON格式返回AJAX

Wha*_*hen 2 ajax jquery renderpartial yii

根据上述主题,我对数据的返回有些困惑.因此,当我尝试将渲染局部视图数据从我的控制器返回到AJAX时,代码将如下所示.

JQuery AJAX:

$.ajax({
         url: "<?php echo $this->createUrl('ajaxrequest');?>",
         type: "POST",
         data: {affordableCarPrice: ccarprice},                        
         success: function(data){
            console.log(data);
         }
});
Run Code Online (Sandbox Code Playgroud)

Yii控制器

public function actionAjaxrequest(){               

        $carListingView[] = $this->renderPartial("_budgetNewCarsListing", array('newCarListing' => $newCarListing), true);
        $carListingView[] = $this->renderPartial("_budgetUsedCarsListing", array('usedCarListing' => $usedCarListing), true);

        var_dump($carListingView);
}
Run Code Online (Sandbox Code Playgroud)

控制器内部的代码,我最小化它,当我记录返回数据时,它给了我正确的.但是,当我在控制器中使用json_encode数组时,我回去查看返回数据,它给了我错误的数据.

尽管我在JQuery ajax中设置了dataType:'json'和contentType:"application/json; charset = utf-8".或标题('Content-type:application/json'); 在控制器中.它仍然返回错误的数据.

需要帮助非常糟糕,因为我差不多2天就解决了这个问题.:(

ern*_*nie 7

要将数据返回给JS:

public function actionAjaxrequest(){               
    $carListingView[] = $this->renderPartial("_budgetNewCarsListing", array('newCarListing' => $newCarListing), true);
    $carListingView[] = $this->renderPartial("_budgetUsedCarsListing", array('usedCarListing' => $usedCarListing), true);

    echo CJSON::encode($carListingView);
}
Run Code Online (Sandbox Code Playgroud)

两件重要的事情.第一个是第三个参数renderPartial().正如文件所述:

是否应返回渲染结果而不是显示给最终用户

这意味着它不会回显出渲染视图,而是以字符串形式返回.

第二个是CJSON :: encode(),它接受变量并将其转换为JSON表示,javascript将能够处理. CJSON::encode()它的优点是它不需要任何特定版本的PHP(json_encode需要PHP 5.2或更新版本),并且它可以处理Active Records.