我的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
});
被调用的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正在执行,但结果并没有像我希望的那样回流到视图。
任何建议都会感激不尽。谢谢。
答案 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视图,但它现在工作得非常好。