2011-12-13 48 views
1

如果你看看我有位有一個問題,我有一個表格(webbooks.phtml)中,我使用jQuery的功能使用jQuery發佈Zend框架數據

http://pastebin.com/7Pbd43fC -webbooks .phtml(實際上是一個菜單,實際上是一個視圖,您鍵入您正在搜索的產品)

http://pastebin.com/q8RJWdb7 -webbookscontroller(這是一個控制器,它使用API​​從SQL數據庫中獲取數據基於字符串/數...等通過webbooks.phtml給出)

http://pastebin.com/vuy9GUvP -index.phtml(第是被它的結果應該被視爲檢視空間)

這是我得到的數組:

{"book_title":"Bioethics in the 21st Century", 
"id":"1424", 
"isbn":"978-953-307-270-8"," 
unix_name":"bioethics-in-the-21st-century", 
"visible_online":"1"} 

我可以看到這個陣列時,我

die((json_encode)$result); 

,我想這數組來獲得我的看法(index.phtml)? 我是PHP的新手,我試圖做一些可能是不好的做法,可能是不可能的。我基本上只是一起黑客攻擊測試我的知識,看看PHP可以做什麼。這可能嗎?

+1

退房上下文切換http://framework.zend.com/manual/en/zend.controller.actionhelpers.html#zend.controller.actionhelpers.contextswitch –

回答

3

這是使用ajax/json調用Zend Controller的基本用法的示例,並獲得對相同phtml的響應,因此您可以在代碼中使用它。

在一個.phtml文件我的JavaScript調用它(在索引控制器)的作用ajaxAction():

<script language = "Javascript"> 
var param1 = 'first'; //or get value from some DOM element 
var param2 = 'second'; //or get value from some DOM element 

jQuery.ajax({ 
     url: '/default/index/ajax', 
     type: 'POST', 
     data: {param1: param1, param2:param2 }, 
     dataType: "json", 
     success: function(result){ 
      var return1 = result.return1; 
      var return2 = result.return2; 
      // return1 and return2 is value from php file. 
      // fill out DOM element or do the windows.location() 
     } 
}); 
</script> 

在索引控制器的ajaxAction()應該得到的請求:

public function ajaxAction(){ 
    $this->view->layout()->disableLayout(); 
    $this->_helper->viewRenderer->setNoRender(true); 

    $param1 = $this->_request->getParam('param1'); 
    $param2 = $this->_request->getParam('param2'); 

    // DO THE OTHER STUFF AND LOGIC HERE 

    $results = array(
     'return1' => 'value1', 
     'return2' => 'value2' 
    ); 

    $this->_response->setBody(json_encode($results)); 
} 

以任何方式我建議聆聽@jakenoble並在Zend中查看(學習)上下文切換。

1

如果您的客戶端調用的結果僅僅是一個重定向到另一個頁面,那麼爲什麼不去做這一切在一個控制器/動作/ viewscript如下:

  1. 使該表單提交GET請求而不是POST
  2. 將表單提交回同一頁面,執行遠程API調用並呈現結果。

即使您想在兩個操作中執行此操作 - 一個顯示錶單,另一個顯示結果 - 我沒有看到您從AJAX調用獲得什麼值。

我是否缺少其他一些要求?

與當前的結構做,你必須遠程API調用的結果保存到會話,然後重定向之後檢索。可以做到的,但是如果可以在一個單一的行動中完成,那麼它就不必要了。