我正在写一个包含搜索框和“标签”的ajax搜索页面;我们的想法是用户输入查询,更改选项卡,使用新选项提交查询,并在下面加载结果。
我有一个奇怪的问题,返回的数据('content')的长度(?)似乎阻止我运行任何额外的JS。
如下所示,当用户在标签之间轻弹时,#resultArea被设计为包含多组结果,因此如果查询相同而不是发送另一个不必要的数据库查询,它将显示缓存结果。
“内容”是返回的数据 - 似乎只要我使用它(无论是在警报中,还是在页面上打印),我都无法执行任何更多的javascript。如果我从.append函数中删除+ content +,则会触发该行后面的警报。这是设计吗?
“内容”包含相当多的数据 - s和格式的加载,所以我想知道这是否是问题。然而,这一切都可以正常显示!我只想添加一些额外的JS,这样我就可以将广告加载到渲染结果中,但这让我很难过。
$.ajax({
type: 'POST',
url: formUrl,
data: formData,
dataType: 'html',
success: function(content) {
$('#resultsBit').slideUp(200);
if (query!=prevQuery)
{
$('#results_'+flavour).remove();
}
alert('I will fire');
$('#resultsArea').append('<div id="results_'+flavour+'" style="display:true;">'+content+'</div>');
alert('I will not fire');
}
});
提前感谢任何指示。
答案 0 :(得分:0)
如果我从
+content+
功能中删除.append()
,则会触发该行后面的提醒。这是设计吗?
这给出了一个很大的线索,关于发生了什么;这意味着content
内的某些内容导致错误(实际抛出异常),并且可以从控制台看到此错误。
如果没有控制台,您可以将代码包装在try { } catch
块中,如下所示:
try {
$('#resultsArea').append('<div id="results_'+flavour+'" style="display:true;">'+content+'</div>');
} catch (e) {
alert('Oh no, error: ' + e);
}
这应该可以让您了解content.