因此,我使用AJAX从我的数据库中获取行,然后将它们转换为一个具有变量标识符的数组,下面是PHP代码:
$query_val = $_GET["val"];
$result = mysql_query("SELECT * FROM eventos_main WHERE nome_evento LIKE '%$query_val%' OR local_evento LIKE '%$query_val%' OR descricao_evento LIKE '%$query_val%'");
for($i=0;$i<mysql_num_rows($result);$i++){
$array = array();
$array[$query_val] = mysql_fetch_row($result); //fetch result
echo json_encode($array);
}下面是javascript:
$('#s_query').keyup(function(){
var nome = document.getElementById('s_query').value;
$.ajax({
url: 'search.php',
data: '&val='+nome,
dataType: 'json',
success: function(data)
{
console.log(nome);
var image_loc = data.nome[7];
console.log(image_loc);如果我将行var image_loc = data.nome[7];更改为var image_loc = data.nidst[7];,它可以完美地工作。Nidst是我要搜索的术语。此代码返回错误:“未捕获TypeError:无法读取未定义的属性'7‘”。我该怎么办?
发布于 2013-01-22 03:21:59
使用:
var image_loc = data[nome][7];发布于 2013-01-22 03:28:30
data.nome[7];正在尝试访问data的一个名为nome的属性,该属性不存在。由于您声明了一个保存所需属性名的变量nome,因此需要引用值作为属性名,如data[nome][7]。
示例:如果为var nome = 'foo',则data[nome][7]的计算结果为data['foo'][7],与data.foo[7]相同。
您正在做的是data.nome[7],它与data['nome'][7]相同,唯一有效的方法是if var nome = 'nome'。
发布于 2013-01-22 03:28:08
另一个问题是服务器无法响应有效的json数据。尝试修改代码:
$array = array();
for ($i = 0; $i < mysql_num_rows($result); $i++) {
$array[$query_val] = mysql_fetch_row($result);
}
die(json_encode($array));https://stackoverflow.com/questions/14445654
复制相似问题