【问题标题】:Zend and Jquery (Ajax Post)Zend 和 Jquery(Ajax 帖子)
【发布时间】:2011-06-01 09:10:29
【问题描述】:

我正在使用 zend 框架,我想在不刷新页面的情况下使用 Jquery ajax post 获取 POST 数据以保存。

//submit.js

$(function() {

    $('#buttonSaveDetails').click(function (){
        var details = $('textarea#details').val();
        var id = $('#task_id').val();
        $.ajax({
            type: 'POST',
            url: 'http://localhost/myproject/public/module/save',
            async: false,
            data: 'id=' + id + '&details=' + details,
            success: function(responseText) {
                //alert(responseText)
                console.log(responseText);
            }

        });
    });
});

在我的控制器上,我只是不知道如何从 ajax 检索 POST 数据。

public function saveAction() 
{

    $data = $this->_request->getPost();
    echo $id = $data['id'];
    echo $details = $data['details'];
    //this wont work;
}

提前致谢。

【问题讨论】:

    标签: php jquery ajax zend-framework post


    【解决方案1】:

    $.ajaxdataType选项设置为'json',并修改成功回调以从接收到的JSON中读取:

    $('#buttonSaveDetails').click(function (){
        var details = $('textarea#details').val();
        var id = $('#task_id').val();
        $.ajax({
                type: 'POST',
                dataType: 'json',
                url: 'http://localhost/myproject/public/module/save',
                async: false,
    
                // you can use an object here
                data: { id: id, details: details },
                success: function(json) {
                    console.log(json.id + ' ' + json.details);
                }
        });
    
        // you might need to do this, to prevent anchors from following
        // or form controls from submitting
        return false;
    });
    

    然后从您的控制器发送如下数据:

    $data = $this->_request->getPost();
    echo Zend_Json::encode(array('id' => $data['id'], 'details' => $data['details']));
    

    最后,请确保已禁用自动视图呈现,因此返回客户端的唯一输出是 JSON 对象。

    【讨论】:

    • @Zend_Newbie_Dev - 随时:)
    • karim79answer的一些简化:1.$.ajaxurl也可以是相对的(推荐在同一个域内),2.$.ajax的@ 987654330@ 也可以使用$("#formId").serialize() 生成(自动进行 URL 编码)
    【解决方案2】:

    最简单的方法是:

    $details=$this->getRequest()->getPost('details');
    
    $id= $this->getRequest()->getPost('id');
    

    希望这对你有用。

    【讨论】:

      猜你喜欢
      • 2011-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-14
      • 2012-05-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多