JSONP を使用して作業しているサイトの検索を作成しました。私のコードは以下の通りです:
$(document).ready(function() {
function pSearch() {
var url = "/pq2";
$.getJSON(url + "?callback=?", $("#searchform").serialize(), function(data) {
$("#searchResults").empty();
console.log(data);
$.each(data, function(index, value) {
$("#searchResults").append('<a href="[[~' + value.id + ']]"><h2>' + value.pagetitle + '</h2></a>');
})
})
}
$("select").change(pSearch);
});
ユーザーが複数選択ボックスから用語を選択すると、それらの用語を満たすページのリストが返されます。一部の用語は完全に機能しますが、他の用語は Chrome で次のエラーをスローします。
キャッチされていない SyntaxError: 予期しない識別子
一部の結果が機能し、他の結果がこのエラーをスローする原因について混乱しています。ご協力ありがとうございました!
編集—JSONP の生成 PHP ファイルは配列を生成し、次の行は JSONP を生成します (CMS は MODX)。
$final = array();
foreach ($collection as $c) {
$allowedTvNames = array('tv_names');
$templateVars = $modx->getCollection('modTemplateVar', array('name:IN' => $allowedTvNames));
$a = $c->toArray();
foreach ($templateVars as $tv) {
$a[$tv->get('name')] = $tv->renderOutput($c->get('id'));
}
$final[] = $a;
}
echo $_GET['callback'] . '(' . json_encode($final) . ')';