Ajax で常に "textStatus: parsererror, errorThrown: SyntaxError: Unexpected token :" が発生するという問題があります。
ただし、応答は "responseText: {"success":"Search Successful","Timetable":"aaa"}," です。
Web サイト jsonlint.com で検索したところ、JSON が有効であることがわかりました。
注:「aaa」は私が返したい文字列でした。長すぎるかもしれないので「aaa」に変更しましたが、それでもエラーが発生します。
これがAjaxのコードです
$.ajax({
type:"Get",
url:"cgi-bin/timetable.pl",
contentType:"application/json;charset=utf-8",
dataType:"jsonp",
data:"username="+username,
error:function(XMLHttpRequest,textStatus,errorThrown)
{
$('div#result').text(result);
$('div#result').text("responseText: " + XMLHttpRequest.responseText
+ ", textStatus: " + textStatus
+ ", errorThrown: " + errorThrown);
$('div#result').addClass("error");
},
success: function(data)
{
if (data.error)
{
$('div#result').text("data.error: " + data.error);
$('div#result').addClass("error");
}
else
{
$('div#result').text("data.success: " + data.success
+ ", data.userid: " + data.clasinfo);
$('div#result').addClass("success");
}
}
})
パールはこちら
foreach $classid(@claid)
{
$class->execute($classid);
while (@cinfo = $class->fetchrow_array())
{
$num = @cinfo;
$combineinfo = "";
for ($i=0;$i<$num;$i++)
{
$combineinfo .= $cinfo[$i]."V";
}
}
push(@info,$combineinfo);
}
$json = (@info)?
qq{{"success":"Search Successful","Timetable":"'@info"}}:
qq{{"error":"Search Error"}};
print $cgi->header(-type => "application/json", -charset => "utf-8");
print $json;