0

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) . ')';
4

1 に答える 1