私のアプリケーションでは、 Uncaught SyntaxError: Unexpected token : getJSON を使用してサーバーから JSON を取得すると、エラーが発生します。
これは私が使用するJavaScriptです:
$('#employeeListPage').bind('pageinit', function(event) {
getEmployeeList();
});
setInterval ( "getEmployeeList()", 10000 );
var vanhadata = "";
function getEmployeeList() {
$.getJSON(serviceURL + 'getemployees.php?autonumero=' + autonumero + 'callback=?', function(data) {
if(JSON.stringify(data) != JSON.stringify(vanhadata)){
$('#employeeList li').remove();
employees = data.key;
$.each(employees, function(index, employee) {
$('#employeeList').append('<li><a href="keikka.html?id=' + employee.IND + '">' +
'<h4>' + employee.OSO + '</h4>' +
'<img src="pics/' + employee.TILA + '.png"/>' +
'<p>' + employee.AIKA + '</p>' +'</a></li>');
});
$('#employeeList').listview('refresh');
if(vanhadata != "")
alert("Uusia keikkoja!");
vanhadata = data;
}
});
}
サーバーからの JSON 応答は正しいようですが、エラーが表示され、データが表示されません。コンソールも出力します:"Resource interpreted as Script but transferred with MIME type text/html:"
これは JSON 応答です。
{
"key": [
{
"NIMET": "Tuntematon",
"PERHJAS": "0",
"SAATTAJA": "0",
"m_yht": "0",
"OSO": null,
"AIKA": "2010-03-11 10:00:00",
"OSOITELAJI": "0",
}
]
}UncaughtSyntaxError: Unexpectedtoken:
そして getemployees.php:
<?php
header('Content-Type: application/json; charset=UTF-8');
include 'config.php';
$number = $_GET['autonumero'] ;
$sql = "select * from table where number=\"$number\"";
try {
$dbh = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $dbh->query($sql);
$employees = $stmt->fetchAll(PDO::FETCH_OBJ);
$dbh = null;
echo '{"key":'. json_encode($employees) .'}';
} catch(PDOException $e) {
echo '{"error":{"text":'. $e->getMessage() .'}}';
}
?>
PHP ファイルを次のように変更する場合:
if ($_GET['callback'])
print $_GET['callback']."(";
echo '{"key":'. json_encode($results) .'}';
if ($_GET['callback'])
print ")";
} catch(PDOException $e) {
echo '{"error":{"text":'. $e->getMessage() .'}}';
}
私が得る応答は次のとおりです。
<br />
<font size='1'><table class='xdebug-error' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Parse error: syntax error, unexpected T_CATCH in C:\Services\getemployees.php on line <i>40</i></th></tr>
</table></font>
したがって、JSON ではありません。