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天就解决了这个问题.:(
要将数据返回给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.
| 归档时间: |
|
| 查看次数: |
11211 次 |
| 最近记录: |