gpt4 book ai didi

javascript - 控制台错误 - 解析 AJAX JSON 解析

转载 作者:行者123 更新时间:2023-11-30 22:07:07 28 4
gpt4 key购买 nike

我一直在使用 AJAX 从我正在创建的网络服务中解析 JSON 数组时遇到问题。我的前端是一个简单的 ajax 和 jquery 组合,用于显示从我正在创建的网络服务返回的结果。

尽管知道我的数据库查询有结果,但我在 Chrome 的控制台中收到一条错误消息,指出“无法读取未定义的长度属性”。

在寻找答案几天后,我仍然无法弄清楚为什么会出现控制台错误。

感谢您的帮助! :)

function ajaxrequest(e)
{
var r = $('#region').val();
var t = $('#type').val();
console.log(r,t);
$.ajax('https://URL...../.../POI/POI_LOOKUP.php',
{ type: 'GET',
data: 'type='+t+'&region='+r+'&format=json',
success: onSuccess }
);
}

function onSuccess(data,status,xmlHTTP)
{
var html = "<table><th>name</th><th>type</th><th>country</th><th>region</th>";
for(var i=0; i<data.length; i++)
{
html = html + '<tr><td>' + data[i].name + '</td>' + '<td>' + data[i].type + '</td>' + '<td>' + data[i].country + '</td>' + '<td>' + data[i].region + '</td></tr>';
}
html = html + '</table>';
$('#results').html(html);
console.log(data);
console.log(status);
}

这是我用于搜索并返回所有结果的 PHP:

IF ($type == "any" && !isset($region)) /* Search DB for all types of POI for all regions*/
{
$statement = $conn->prepare("SELECT * FROM pointsofinterest;");
$statement->execute();
$row = $statement->fetch();

if ($row == false)
{
header("HTTP/1.1 204 No Content");
}
else
{
$allResults = array();
while($row != false)
{
$allResults[] = $row;
$row = $statement->fetch(PDO::FETCH_ASSOC);
}
echo json_encode($allResults);
}
}

最佳答案

理想情况下,如果没有结果,您应该传回空结果,让 Javascript 决定要做什么(向用户显示友好的消息)。我还没有对此进行测试,这只是为了提供指导,请注意。

PHP

if ($type == "any" && !isset($region)) /* Search DB for all types of POI for all regions*/
{
$statement = $conn->prepare("SELECT * FROM pointsofinterest;");
$statement->execute();
$results = $statement->fetchAll();
if (count($results)!=0){
echo json_encode($results);
} else {
header("HTTP/1.1 204 No Content");
}
}

JavaScript

您可能希望单独处理 204 响应:How to handle a 204 response in jquery ajax? .下面的代码假定您可能会收到一个空的 JSON 响应。

function onSuccess(data,status,xmlHTTP)
{
if (data.length==0) {
alert("Friendly user message");
return;
}
var html = "<table><th>name</th><th>type</th><th>country</th><th>region</th>";
for(var i=0; i<data.length; i++)
{
html = html + '<tr><td>' + data[i].name + '</td>' + '<td>' + data[i].type + '</td>' + '<td>' + data[i].country + '</td>' + '<td>' + data[i].region + '</td></tr>';
}
html = html + '</table>';
$('#results').html(html);
console.log(data);
console.log(status);
}

关于javascript - 控制台错误 - 解析 AJAX JSON 解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41286461/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com