【发布时间】:2016-06-26 22:47:36
【问题描述】:
我正在尝试使用 PHP 和 jQuery 创建动态搜索结果页面。
在PHP 端,调用SELECT 语句,检查是否设置了所有变量,添加我想在客户端使用的HTML,然后将变量放入名为$result 的数组中。
在数据库调用的结果中,我还将longitude和latitude添加到自己的数组中,命名为$pins。
然后我创建一个名为$results 的多维数组,并将该数组放在一起,如下所示:
$result = array('listing'=>$listing);
$pins = array('lat'=>$lat1,'lng'=>$lon2);
$results = array('listing'=>$result,'pins'=>$pins);
echo json_encode($results);
现在,客户端我使用 jquery。我面临的问题是总共应该有2个结果。但是,我看到相同的结果重复了两次(我可以确认它们应该是唯一的)。这是我的 jQuery:
$.ajax({
url: '/updatedsearch.php',
type: 'POST',
data: {
q: search,
lng: coordinates[0],
lat: coordinates[1],
},
dataType: "json",
success: function(data) {
if(data == "undefined" || data == null) {
console.log("There was no search results or something similar");
} else {
var pins = [data.pins.lat, data.pins.lng];
$.each(data, function(key, val) {
$('#listings').append(data.listing.listing);
console.log(pins);
console.log(data);
});
}
},
这里的一切都正常工作,除了$.each() 运行时,它似乎两次附加相同的数据。
我认为这是因为.append(data.listing.listing);,如果我理解正确,我没有在这里循环遍历数组,我实际上是在引用data.listing.listing[0] - 我理解正确吗?
编辑:现在我的结果出现了两次问题。结果应该只有两个,但总共有四个,看起来好像是重复的。
{"listing":["<div>This contains my HTML</div>"], "pins":"lat":"50.000000","lng":"-1.000000"}}
我已经通过jsonlint 运行了它,但它似乎无效。使用 PHP,我创建了如下数据:
while($listrow = mysqli_fetch_assoc($list)) {
$listing[] = '<div>This contains my HTML</div>';
}
$pins = array("lat"=>$lat1, "lng"=>$lon2);
$results = array('listing'=>$listing, 'pins'=>$pins);
echo json_encode($results);
我是否误解了使用多维数组,从而导致错误?
【问题讨论】:
-
我想更好地了解您的
$results的外观。直接调用您的 PHP 脚本,并使用虚拟输入 (q,lng,lat),然后在脚本中执行print_r($result)、print_r($pins)和exit,否则您将执行echo json_encode(...).将打印出来的结果添加到您的问题中。 -
@Patrick 感谢您的回复,我已经用更多信息更新了我的问题。
-
看看我的回答。
标签: php jquery multidimensional-array