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);
}
JSON を解析するときに HandleResponse がエラーをスローするためError trying to parse '<'
、配列がエンコードされた方法に関係があると思います。この問題のトラブルシューティングを行い、その配列を解析する方法を見つけるにはどうすればよいですか?