您好我正在尝试使用Zend Jquery实现自动填充字段。我按照教程从数组中获取数据,并扩展了代码以访问mysql表中的数据。
IndexController.php
$this->view->autocompleteElement = new ZendX_JQuery_Form_Element_AutoComplete('ac');
$this->view->autocompleteElement->setLabel('Autocomplete');
$this->view->autocompleteElement->setJQueryParam('source', '/index/city');
这会调用cityAction()
public function cityAction()
{
$results = Application_Model_City::search($this->_getParam('term'));
$this->_helper->json(array_values($results));
}
然后我打电话给模范城市
public static function search($term)
{
$region = new Application_Model_DbTable_Regions();
$results = $region->getRegion($term);
return $results;
}
最后是Regions db模型
public function getRegion($term)
{
$select = $this->select()->from($this,'City')
->where('City LIKE ? ',$term.'%');
return $this->fetchAll($select)->toArray();
}
现在,当我进入自动填充字段时,它会显示结果但是作为UNDEFINED,我认为它可以按照我将数据发送回json助手的方式进行操作。
我使用了firebug,我可以看到数据是按以下格式提取的。
[{ “城市”: “伦敦”},{ “城市”: “伦敦德里”},{ “城市”: “Longfield”},{ “城市”: “Longhope(朗霍普)”},{ “城市”:” Longniddry“}]
我认为这种格式不正确,请问之前处理过这个问题的机构吗?
干杯
Ĵ
答案 0 :(得分:3)
ZendX_JQuery_Form_Element_AutoComplete
元素是AutoComplete View Helper的代理,它是jQuery UI Autocomplete小部件的代理。
如果您阅读jQuery UI Autocomplete页面上的概述,请注意:
本地数据可以是一个简单的字符串数组,或包含数组中每个项目的对象,带有标签或值属性或两者都。 label属性显示在建议菜单中。用户从菜单中选择了某些内容后,该值将插入到input元素中。如果仅指定了一个属性,则它将用于两者,例如。如果仅提供value-properties,则该值也将用作标签。
使用String时,Autocomplete插件希望该字符串指向将返回JSON数据的URL资源。它可以位于同一主机上,也可以位于不同的主机上(必须提供JSONP)。请求参数“term”将添加到该URL。 数据本身可以采用与上述本地数据相同的格式。
因此,您返回自动完成的JSON应该更像是:
[{"label":"London","value":"London"},{"label":"Londonderry","value":"Londonderry"},{"label":"Longfield","value":"Longfield"}]
祝你好运!
答案 1 :(得分:0)
修复了几小时疼痛后的问题!
我修改了以下代码,用于访问数据
public function getRegion($term)
{
$select = $this->select()->from($this,'City')
->where('City LIKE ? ',$term.'%');
return $this->fetchAll($select)->toArray();
}
我添加了一行SQL City AS Value
public function getRegion($term)
{
$select = $this->select()->from($this,'City AS value')
->where('City LIKE ? ',$term.'%');
return $this->fetchAll($select)->toArray();
}
这似乎有效!
干杯
Ĵ