Javascript 返回未定义值的Ajax
我有一个搜索功能,它假设从数据库中搜索一个名称,然后当用户单击“添加”时,选择项必须显示在搜索字段下方,简言之,它必须被发回,以便用户可以从搜索元素中重新选择他/她的第二个选项,以便所有选定的选项都可以保存在数据库中。我面临的问题是,当我点击add后,我得到了未定义的值,而不是我选择的值,我的回答是一个名称而不是Id号,下面是我的代码和图片 模型 控制器Javascript 返回未定义值的Ajax,javascript,php,jquery,ajax,zend-framework,Javascript,Php,Jquery,Ajax,Zend Framework,我有一个搜索功能,它假设从数据库中搜索一个名称,然后当用户单击“添加”时,选择项必须显示在搜索字段下方,简言之,它必须被发回,以便用户可以从搜索元素中重新选择他/她的第二个选项,以便所有选定的选项都可以保存在数据库中。我面临的问题是,当我点击add后,我得到了未定义的值,而不是我选择的值,我的回答是一个名称而不是Id号,下面是我的代码和图片 模型 控制器 { $id = $this->getRequest()->getParam('id'); $mdlservi
{
$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();
}
});
});
提前感谢您正在查找返回的数组中不存在的密钥。请尝试此操作
var row = '<tr><td>' + data['label'] + '</td></tr>';
还是这个
var row = '<tr><td>' + data['value'] + '</td></tr>';
由于这是您在PHP页面中定义的两个键,您可以使用data[value]而不是data[serviceprovider]:
因为您已经对包含三个键的数组进行了编码:label、value和id。所以目前没有serviceprovider键可供Zend编码。试试看
var row = '<tr><td>' + data[0].value + '</td></tr>';
查看其中包含的内容。从我看到的内容来看,我认为您正在从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();
}
}
});
});
在控制器中,请尝试:
$this->disableLayout();
$this->_helper->viewRenderer->setNoRender(true);
return $this->_helper->json(array('key1' => $val1, 'key2' => $val2, ...));
仍在获取未定义项将获取未定义项以使用数据[0]。值。还要确保$results包含值。请尝试使用var_dump$results或print_r$results进行检查。这次没有任何内容发回。我正在获取返回的空值。您的$arr\u rtn为空?否单击“添加”后发回的值为空控制器中的$id值是多少?您可以使用日志来查看它。假设从搜索元素中选择值
alert(JSON.stringify(data));
$('#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();
}
}
});
});
$this->disableLayout();
$this->_helper->viewRenderer->setNoRender(true);
return $this->_helper->json(array('key1' => $val1, 'key2' => $val2, ...));