基于AJAX响应更新Zend视图中的表

时间:2016-06-21 08:36:19

标签: php jquery ajax zend-framework

我的webapp有一个视图,它在底部显示一个表(html表)。 我需要以不同的格式显示表中的一些数据,具体取决于select元素和AJAX响应。它主要与时区有关。

我的webapp中有很多JSON AJAX,它们都运行良好。

但是由于这个特殊方面,我真的很困惑。我尝试过很多东西。

以下是摘要: - select元素有一个运行一些javascript的onchange - javascript运行两个AJAX调用,一个用于JSON,一个用于HTML(如下所示)

    $.ajax({
                url: URL,
                type: "POST",
                data: {timzone_option:option,lo_id:lo_id},
                dataType:'HTML',
                success: function(response) 
                {
        $('#c-content').html(data);
                } //end success

    });
  • JSON一个正常,HTML没有做任何事情
  • 被调用的URL在Controller中触发一个函数,该函数执行以下操作:

    $this->_helper->layout->disableLayout();
    $option_id = $this->_getParam('timzone_option');
        $in_lo_id = $this->_getParam('lo_id'); 
    
    $this->_helper->layout->disableLayout();
    global $objSession;
    if($this->view->user->user_id!='')
    {
            $recC = $this->modelSuper->Selectcallprod("CALL SP_GET_C_VIA_O('".$in_lo_id."')",'fetchall');
            $list_tmzn = getVal('timezones','zone_name', 'zone_id', $recC['listing_timezone']) ;
            $user_tmzn = getVal('timezones','zone_name', 'zone_id', $this->view->user->user_timezone_id) ;     
            if($option_id == 1)
                {
            $numCount=0;
            foreach($recC as $record) 
            {
                $recC[$numCount]['loc_deadline_date']=convertUserDate($record['loc_deadline_date'], $this->view->user->user_datetimeformat, $list_tmzn,'UTC');
                $numCount++;
            }
                }
                if($option_id == 2)
                {
            $numCount=0;
            foreach($recC as $record) 
            {
                $recC[$numCount]['loc_deadline_date']=convertUserDate($record['loc_deadline_date'], $this->view->user->user_datetimeformat, $user_tmzn,'UTC');
                $numCount++;
            }
                }
        $this->view->c = $recC;
    } else
    die();
    echo $recC;
    exit();
    

我的问题是即使我已经正确地提到了divid,Zend / PHP如何期望知道如何注入""很好地将AJAX响应(这是一个数组作为表中显示的记录集)放入表中?我尝试将dataType从HTML更改为JSON,但没有任何区别。

我已验证我的SQL存储过程语法和参数正常,javascript正在执行,但结果并没有像我希望的那样回流到视图。

任何建议都会感激不尽。谢谢。

2 个答案:

答案 0 :(得分:0)

如果ajax $this->view->c无效。使用json方式,只需echo json_encode($recC)。现在,您将能够在javascript中获得响应。只需在成功块中添加console.log(data)即可。

答案 1 :(得分:0)

我原来的Javascript很好,问题在于控制器内的接收操作。

我改变了:                 $ list_tmzn = getVal(' timezones',' zone_name',' zone_id',$ recC [' listing_timezone']);

于:                 $ list_tmzn = getVal(&#39; timezones&#39;,&#39; zone_name&#39;,&#39; zone_id&#39;,$ recC [0] [&#39; listing_timezone&#39;]); < / p>

我改进了两个foreach块以改善空值处理。

最后,我创建了一个与动作同名的接收Zend视图。

那时我可以看到我的内容。我不得不整理ajax视图,但它现在工作得非常好。