我已经构建了一个搜索我正在使用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) . ')';
答案 0 :(得分:1)
在浏览器中使用dev工具查看JSONP响应,以确定它是有效还是可能引发某种PHP警告/错误。
在Chrome中,转到查看&gt;开发人员&gt;开发人员工具,打开网络选项卡,然后启动您的JSONP请求。然后在左侧窗格中选择“/ pq2”,然后单击右侧的“预览”或“响应”选项卡以查看响应的内容。
如果问题不明显,那么将它发回这里。