【问题标题】:using jquery to post data in zend framework使用 jquery 在 zend 框架中发布数据
【发布时间】:2012-01-19 02:53:30
【问题描述】:

如果您检查一下,我对以下内容有一点问题,我有一个表单 (webbooks.phtml),其中我使用了 jQuery 函数

http://pastebin.com/7Pbd43fC -webbooks.phtml(实际上是一个菜单,实际上是一个视图,您可以在其中键入要搜索的产品)

http://pastebin.com/q8RJWdb7 -webbookscontroller(这是一个控制器,它使用 API 根据 webbooks.phtml 给出的字符串/数字...等从 SQL 数据库中获取数据)

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 能做什么。这可能吗?

【问题讨论】:

标签: php zend-framework jquery


【解决方案1】:

这是使用 ajax/json 调用 Zend Controller 并获得对相同 phtml 的响应的基本用法示例, 所以你可以在你的代码中使用它。

在 .phtml 文件中,我有调用(在 IndexController 中)动作 ajaxAction() 的 javascript:

<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>

在 IndexController 中,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 中的上下文切换。

【讨论】:

    【解决方案2】:

    如果您的客户端调用的结果只是重定向到另一个页面,那么为什么不在单个控制器/动作/视图脚本上完成所有操作,如下所示:

    1. 使表单提交 GET 请求而不是 POST
    2. 将表单提交回同一页面,执行远程 API 调用并呈现结果。

    即使您想在两个操作中执行此操作 - 一个显示表单,另一个显示结果 - 我看不出您从 AJAX 调用中获得了什么价值。

    我是否缺少其他要求?

    使用当前结构执行此操作,您必须将远程 API 调用的结果保存到会话中,然后在重定向后检索它。可行,但如果它可以在一个动作中完成,我觉得它是不必要的。

    【讨论】:

      猜你喜欢
      • 2010-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多