0

所以我使用 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 是我搜索的术语。此代码返回错误:“未捕获的类型错误:无法读取未定义的属性 '7'”。我应该怎么办?

4

3 回答 3

3

data.nome[7];正在尝试访问不存在的datanamed属性。nome由于您声明了一个nome包含所需属性名称的变量,因此您需要将该引用为属性名称,例如data[nome][7].

示例:如果var nome = 'foo', thendata[nome][7]将评估data['foo'][7]为与 相同的data.foo[7]

您所做的data.nome[7]是与 相同的data['nome'][7],唯一可行的方法是 if var nome = 'nome'

于 2013-01-21T19:28:29.923 回答
1

利用:

var image_loc = data[nome][7];
于 2013-01-21T19:21:59.017 回答
0

另一个问题是服务器不响应有效的 json 数据。尝试修改代码:

$array = array();
for ($i = 0; $i < mysql_num_rows($result); $i++) {
    $array[$query_val] = mysql_fetch_row($result);
}
die(json_encode($array));
于 2013-01-21T19:28:08.213 回答