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

1

使用浏览器中的开发工具来查看 JSONP 响应,以确定它是否有效或可能抛出某种 PHP 警告/错误。

在 Chrome 中,转到查看 > 开发人员 > 开发人员工具,打开网络选项卡,然后启动您的 JSONP 请求。然后在左侧窗格中选择“/pq2”,然后单击右侧的“预览”或“响应”选项卡以查看响应是什么。

如果问题不是很明显,请将其发回此处。

于 2013-10-08T02:17:47.677 回答