0

我正在尝试在我的 Web 应用程序中创建一个搜索框,并使用 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>

服务器端(从 ajax 检索帖子并进行查询后):

while ($result = mysql_fetch_assoc ($query))
{
   $resultName = $result['name'];
   $resultAddress = $result['address'];
}
4

2 回答 2

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']);
于 2012-08-30T23:21:12.843 回答
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()

于 2012-08-30T23:21:46.843 回答