我为城镇名称"Auckland"answers"Hamilton"创建了一个数组,但php的响应总是空的,知道吗?
更新:经过调试,我发现问题出在php查询中"where town='$town'",一旦我删除了这行,其余的都很好。但我仍然不明白为什么:<
javascript:
var _addNewTowntoList = function(){
if (_request.readyState == 4) {
if (_request.status == 200) {
var data = JSON.parse(_request.responseText);
if(data.length == 0){
alert("No such town");
return;
}
var t = data[0].town;
var o = data[0].outlook;
var min = data[0].min_temp;
var max = data[0].max_temp;
var witem = new WLine(t,o,min,max);
console.log(t+" "+o+" "+min+" "+max);
_list.push(witem);
}
}
}
这是php
$town = $POST_['town'];
$query = "Select * From weather WHERE town = '$town'";
$result = mysqli_query($conn, $query);
//create array for data
$data = array();
while($row = mysqli_fetch_assoc($result))
{
$data[] = $row;
}
echo json_encode($data);
更改此
$town = $POST_['town'];
> $query = "Select * From weather WHERE town = '$town'";
至
$town = $_POST['town'];
$query = "Select * From weather WHERE town = '".$town."'";
记住正确转义查询字符串
$town = mysqli_real_escape_strin($conn, $_POST['town']);
因为否则您的脚本将被打开以进行SQL注入攻击
除了$_POST
的正确名称之外,这里要提到的另一件事是,您可以使用mysqli_fetch_all
函数一次获取所有结果,从而避免循环。例如
echo json_encode(mysqli_fetch_all($result, MYSQLI_ASSOC));