3

我正在编写一个包含搜索框和“选项卡”的 ajax 搜索页面;这个想法是用户输入查询,更改选项卡,使用新选项提交查询,并在下面加载结果。

我有一个奇怪的问题,返回的数据('内容')的长度(?)似乎阻止我运行任何额外的 JS。

见下文,#resultsArea 旨在在用户在选项卡之间滑动时包含多组结果,因此如果查询相同,它将显示缓存的结果,而不是发送另一个不必要的数据库查询。

“内容”是返回的数据——似乎一旦我使用它(无论是在警报中,还是在页面上打印),我就无法再执行任何 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');

    }
});

在此先感谢您的任何指点。

4

1 回答 1

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.

于 2012-12-23T16:07:04.343 回答