2

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

jQuery AJAX:

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

Yii 控制器

public function actionAjaxrequest(){               

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

        var_dump($carListingView);
}

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

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

非常需要帮助,因为我几乎 2 天都无法解决这个问题。:(

4

1 回答 1

8

将数据返回给 JS:

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

    echo CJSON::encode($carListingView);
}

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

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

这意味着不是回显呈现的视图,而是将其作为字符串返回。

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

于 2012-07-26T19:33:25.343 回答