【发布时间】: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。