我在尝试将 PHP 脚本的结果返回到我的 HTML / Jquery 应用程序时遇到问题。
目前,我正在尝试像这样连接到服务器:
function getDatabaseRows()
{
var xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = function()
{
if(xmlHttp.readyState == 4)
{
HandleResponse(xmlHttp.responseText);
}
}
xmlHttp.open("POST", "myDomain.com/subDirectory/getRowCounts.php", true);
xmlHttp.send(null);
}
我的响应处理程序是:
function HandleResponse(response)
{
alert(response.length);
if(response.length != 0)
maxArray = JSON.parse(response);
storage.set('currentID', maxArray);
}
目前,每当我运行代码时,getDatabaseRows()
总是最终调用HandleResponse(response)
. 问题是response.length
总是等于0
。
PHP 脚本只是从数据库中收集最大行数并返回行数:
<?php
$rowCounts = [];
$dbhost = 'host';
$dbuser = 'host';
$dbpass = 'host';
$con = mysql_connect($dbhost, $dbuser, $dbpass) or die('Error connecting to mysql');
mysql_select_db("host") or die(mysql_error());
$sql = "SELECT MAX(TID) AS MaxTID FROM TransData";
$results = mysql_query($sql, $con);
$transRow = mysql_fetch_array($results);
$maxTrans = $transRow['MaxTID'];
$sql = "SELECT MAX(FID) AS MaxFID FROM FullData";
$results = mysql_query($sql, $con);
$fullRow = mysql_fetch_array($results);
$maxFull = $fullRow['MaxFID'];
$sql = "SELECT MAX(SID) AS MaxSID FROM SalamanderData";
$results = mysql_query($sql, $con);
$salamanderRow = mysql_fetch_array($results);
$maxSal = $salamanderRow['MaxSID'];
$sql = "SELECT MAX(OID) AS MaxOID FROM OthersData";
$results = mysql_query($sql, $con);
$othersRow = mysql_fetch_array($results);
$maxOther = $othersRow['MaxOID'];
array_push($rowCounts, $maxTrans, $maxFull, $maxSal, $maxOther);
echo json_encode($rowCounts);
mysql_close($con);
?>
当我将浏览器直接指向脚本时,它会回显我的行数正确。我只是在尝试通过 AJAX 获取数据时遇到了麻烦。
编辑:
好的,我终于连接了脚本,它与跨域脚本问题有关。现在都整理好了。
不过新问题:
function HandleResponse(response)
{
if(response.length != 0)
maxArray = JSON.parse(response);
storage.set('currentID', maxArray);
}
HandleResponse 在解析 JSON 时会抛出错误Error trying to parse '<'
,所以我认为它与 Array 的编码方式有关。我该如何解决这个问题并弄清楚如何解析该数组?