jQuery ajax和append - 内容太大了?

时间:2012-12-03 18:32:06

标签: php javascript jquery

我正在写一个包含搜索框和“标签”的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');

    }
});

提前感谢任何指示。

1 个答案:

答案 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.

的错误