我有一个搜索功能,假设从数据库中搜索一个名字,然后当用户点击添加时,选择的项目必须出现在搜索字段下方,简而言之它必须回发以便用户可以从搜索元素中重新选择他/她的第二个选项,以便可以将所有选定的选项保存在数据库中。我面临的问题是,在我点击添加后,我将获取未定义的值而不是我选择的值,而我的响应是名称而不是ID号,这里是我的代码和下面的图片。
MODEL
public function getName($id)
{
$select = $this->select()
->where('service_provider_id LIKE "' . $id . '%"')
->order('service_provider_name');
return $this->fetchAll($select);
}
CONTROLLER
{
$id = $this->getRequest()->getParam('id');
$mdlserviceprovider = new Model_ServiceProviders();
$serviceprovider = $mdlserviceprovider ->getName($id);
$arr_rtn = array();
if (count($results) > 0){
foreach($results as $result)
{
$myarr = array( 'label' => $result->service_provider_name,
'value' => $result->service_provider_name,
'id' => $result->service_provider_id
);
array_push($arr_rtn, $myarr);
}
}
echo Zend_Json::encode($arr_rtn);
}
PHTML / AJAX
$('#add1').click(function(){
var data = {};
data['sp'] = $("#search").val();
$.ajax({
url:'<?php echo $this->baseUrl()?>/ajax/postserviceprovider/id',
type:'post',
dataType: "json",
data: data,
success:function(data){
var row = '<tr><td>' + data["serviceprovider"] + '</td></tr>';
$('#t1').append(row);
//alert();
}
});
});
提前致谢
答案 0 :(得分:0)
您正在寻找您要返回的数组中不存在的密钥尝试此
var row = '<tr><td>' + data['label'] + '</td></tr>';
或者这个
var row = '<tr><td>' + data['value'] + '</td></tr>';
因为这些是您在PHP页面中定义的两个键
答案 1 :(得分:0)
您可以使用data["value"]
代替data["serviceprovider"]
:
var row = '<tr><td>' + data["value"] + '</td></tr>';
由于您已对包含三个键的数组进行了编码:label
,value
和id
。因此,此时Zend没有serviceprovider
密钥进行编码。
答案 2 :(得分:0)
尝试
var row = '<tr><td>' + data[0].value + '</td></tr>';
还尝试将alert()
放在成功函数中,例如
alert(JSON.stringify(data));
并查看其中包含的内容..
答案 3 :(得分:0)
从我看到我认为你从php返回一个多维数组,所以我会在javascript中尝试这样的东西:
$('#add1').click(function(){
var data = {};
data['sp'] = $("#search").val();
$.ajax({
url:'<?php echo $this->baseUrl()?>/ajax/postserviceprovider/id',
type:'post',
dataType: "json",
data: data,
success:function(data){
data.each(function(index, el){
var row = '<tr><td>' + el.label + '</td></tr>';
$('#t1').append(row);
//alert();
}
}
});
});
答案 4 :(得分:0)
在您的控制器中尝试:
$this->disableLayout();
$this->_helper->viewRenderer->setNoRender(true);
return $this->_helper->json(array('key1' => $val1, 'key2' => $val2, ...));