【问题标题】:JSON—Unexpected IdentifierJSON - 意外的标识符
【发布时间】:2013-10-14 13:47:30
【问题描述】:

我已经使用 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 中抛出以下错误:

Uncaught SyntaxError: Unexpected identifier

我很困惑什么会导致某些结果起作用,而其他结果会引发此错误。感谢您的帮助!

编辑——生成 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) . ')';

【问题讨论】:

  • 错误出现在哪一行?
  • 我的猜测是来自 php 的响应并不总是有效的 jsonp。你能告诉我们响应是如何产生的吗?
  • @KevinB 当然,我已经添加了一些关于如何生成 JSONP 的内容。我感觉你是对的,因为
  • 你如何填充$final
  • @RecoveringSince2003 我已经为如何生成 $final 添加了更多细节。我使用的 CMS 是 MODX。

标签: php jquery jsonp modx


【解决方案1】:

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

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

如果问题不是很明显,请在此处发布。

【讨论】:

    猜你喜欢
    • 2012-09-23
    • 2014-12-02
    • 2015-09-14
    • 1970-01-01
    • 1970-01-01
    • 2017-09-05
    • 2020-07-10
    • 2012-06-19
    • 2014-04-10
    相关资源
    最近更新 更多