2014-10-29 104 views
1

我想查询一个数据库来获取我可以在JavaScript数组中使用的一些数据行。数组的格式应该是这样的,以便我可以稍后使用它。使用JSON响应从ajax创建一个Javascript数组

var data = [ 
    { 
     column1: 'Test 1', 
     column2: 'Some Test' 
    }, 
    { 
     column1: 'Test 2', 
     column2: 'Another Test' 
    }, 
    { 
     column1: 'Test 3', 
     column2: 'Yet Another Test' 
    } 
]; 

这是我如何从数据库中获取的行创建的JSON

var data = new Array(); 

$.ajax({ 
     url : 'util/getJSON.php', 
     type : 'POST', 
     dataType : 'json', 
     success : function (response) { 

     }   
    }); 

我的PHP文件

$sql = "SELECT column1, column2 FROM table"; 

$stmt = $db->prepare($sql); 
$stmt->execute(); 
$rows = $stmt->fetchAll(); 

$array = array(); 

foreach($rows as $key => $row) { 
    $array[$key]['column1'] = $row['column1']; 
    $array[$key]['column2'] = $row['column2']; 
} 

echo json_encode($array); 

的问题是我不知道如何创建在ajax调用中使用JSON响应的JavaScript数组。

编辑:

我以后需要使用数据阵列这样

// Loop through the array 

for(var i in data){ 
    if(data[i].name.match($search)){ 
     $suggestedUL.append($("<li><span class='suggest-name'>" + data[i].name + "</span><span class='suggest-description'>" + data[i].description + "</span></li>")); 
    } 
} 
+0

什么是在控制台输出? – 2014-10-29 14:54:12

+0

你为什么要创建一个数组?为什么不使用json对象? – vaso123 2014-10-29 14:55:02

+0

JSON基本上是javascript。 'response'将成为您在PHP中编码的数据结构的JavaScript等价物,例如它会成为一个对象。你告诉jquery期望JSON,所以jquery会自动解码php发出的JSON字符串,并将其转换为本地javascript结构。 'console.log(response)'会显示你到底收到了什么。 – 2014-10-29 14:55:21

回答

1

阿贾克斯:

var data = new Array(); 

$.ajax({ 
    url : 'util/getSupplierList.php', 
    type : 'POST', 
    dataType : 'json', 
    async: false, 
    success : function (response) { 
     data = JSON.stringify(response); 
    }   
}); 

console.log(data); 
+0

我使用循环的原因是因为它增加了更多的数组。我有'{'列1':'测试1','0':测试1','列2':'测试2','1':'测试2'}' – AdRock 2014-10-29 15:17:20

+0

你不需要它,但是如果你有实时好的重做,那么使用循环,它只有在你需要修改数据时才有用 – meda 2014-10-29 15:18:59

+0

@AdRock我是否回答你的问题? – meda 2014-10-29 15:34:25

0

在成功的功能,通过响应JSON数组进行迭代。

$.each(response, function(index, item) { 
    data[index]["column1"] = $(item).column1; 
    data[index]["column2"] = $(item).column2; 
}