我正在尝试在我的网络应用程序中创建一个搜索框,并使用ajax post向我的服务器发出请求。我的问题是:
是否可以将PHP中的循环数组值发送到我的JavaScript? 我想从我的服务器获得所有结果。
客户端:Ajax POST请求
<script type="text/javascript">
$(document).ready( function() {
$.ajax({
type: "POST",
url: "searchPlaces.php",
data: { searchInput: form.searchTxtId.value },
success: function (result)
{
// Get the search result
}
});
});
</script>
SERVER SIDE(从ajax检索帖子并进行查询后):
while ($result = mysql_fetch_assoc ($query))
{
$resultName = $result['name'];
$resultAddress = $result['address'];
}
答案 0 :(得分:0)
$results = array();
while ($result = mysql_fetch_assoc ($query)) {
$results[] = $result;
}
echo json_encode(array('results' => $results));
在success
回调中,您可以迭代result.results
,其中包含一个包含查询中列名称的对象作为属性。
success: function(result) {
$.each(results, function(i, row) {
console.log(row.name, row.address);
})
}
建议在dataType: 'json'
参数中使用$.ajax({...});
,以避免不必要地猜测响应类型。
如果SQL结果集中的列数多于您希望转发到客户端的列数,则可以在循环中添加自定义数组:
$results[] = array('name' => $row['name'], 'address' => $row['address']);
答案 1 :(得分:0)
是的,你可以返回一个json字符串:
$.ajax({
type: "POST",
dataType: 'json', // return type is json ;
url: "searchPlaces.php",
data: { searchInput: form.searchTxtId.value },
success: function (result)
{
$.each($result,function(index, value){
// use params
}
}
});
在您的php端使用json_encode()