2016-06-21 69 views
0

我的webapp有一个视图,它在底部显示一个表格(html表格)。 我需要根据select元素和AJAX响应以不同的格式显示表中的一些数据。它基本上涉及时区。根据AJAX响应在Zend视图中更新表格

我在我的webapp中有很多JSON AJAX,它们都工作正常。

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

这里的一个总结: - 该选择元件具有运行一些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被调用,触发控制器内的功能,它具有以下功能:

    $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正在执行,但结果没有返回到视图,因为我希望它们。

任何建议将受到感谢。谢谢。

回答

0

如果ajax $this->view->c不起作用。使用json方法,只需echo json_encode($recC)。现在您将可以通过javascript获得回复。只需在您的成功区块中添加console.log(data)即可。

+0

我尝试过,但不幸的是没有喜悦。我现在已经获得了我的代码,控制器有一个包含ajax调用返回的值的数组,我只需要将结果传递给Zend中的ajax视图,然后完成。 – ChrisFNZ

+0

请更新您的SO上的代码。你有没有在firbug控制台中检查你的输出。 –

0

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

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

: $ list_tmzn = getVal('timezones','zone_name','zone_id',$ recC [0] ['listing_timezone']);

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

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

在这一点上,我可以看到我的内容。我不得不整理一下ajax视图,但现在它工作得非常好。