Ajax是一種方法,而不是一個數據類型。
您可能正在發出一個ajax請求,它將返回json,在這種情況下,您可以在json視圖中使用它,或將其解碼並在標準視圖中使用它。
如果您通過您的ajax請求重新調用json對象或數組以顯示爲HTML,您還可以使用jquery解析它。在這裏看到更多的信息:
http://api.jquery.com/jquery.parsejson/
編輯評論如下:
首先,你需要有一個視圖文件輸出HTML,這將是:
應用程序/查看/測試/ index.ctp 應用程序/查看/測試/ add.ctp
等
然後,您有一個對應在你的控制器荷蘭國際集團方法:
public function index(){
//index method here
}
此時當你在瀏覽器中/tests/index.html你的索引視圖將呈現,所有的HTML結構你在index.ctp文件中設置將正在顯示。但是,如果您尚未從數據庫中檢索數據,或者將其設置爲供您的視圖使用,則不會有數據。
所以,以使其運行您的AJAX調用和設置的URL爲/測試/索引
然後將邏輯添加到您的索引功能,在你的控制器是這樣的:
if($this->RequestHandler->isAjax()){
//debug can cause problems with AJAX requests so switch it off if it is on
Configure::write('debug', 0);
//you need to pass the id through in the data parameter of your ajax call
$id = $this->request->query['id'];
$settings = array(
'conditions' => array('Test.id' => $id),
);
$data = $this->Test->find('first', $settings);
return json_encode($data);
}
這將返回一個json數組,您可以使用jquery解析並追加到您的HTML中。
謝謝你的快速反應。我已經想過在Javascript中解析JSON,但是使用HTML表格和許多不同的標籤,爲它編寫JSON解析器需要非常多的時間。我只想使用兩個文件夾,一個用於JSON請求(已經工作),一個用於HTML-AJAX請求。我可以用什麼來代替ajax,html顯然不起作用。 – Battlestr1k3 2015-02-09 12:23:39
我可以澄清一下,你在做AJAX請求來獲取你的數據嗎?例如,您是否嘗試更新視圖而無需用戶重新加載頁面?如果是這樣,你將別無選擇,只能使用並因此解析JSON aray - 這就是AJAX如何返回變量。如果您沒有使用AJAX獲取數據,那麼您只需在控制器中設置變量並使用標準的Cake視圖。您提到了文件夾,在這種情況下,它將是/view/test/json/index.json和/view/test/index.ctp用於PHP/HTML視圖文件。 – 2015-02-09 15:28:33
準確!我目前通過調用index.json輸出html,這是不正確的,因爲它沒有返回json。所以最好的做法是(對於由ajax加載的html)來加載默認目錄中的視圖,如/View/Test/ajax_tabledata.ctp?我可以設置一些類似於普通路由的東西,假設使用.ajax-externsion的所有請求應該從/View/Test/ajax/action.ctp接收輸出?我想在AppController.php中調用beforeRender()的方法 – Battlestr1k3 2015-02-09 16:24:42