【问题标题】:jQuery ajax and append - content too large?jQuery ajax 和追加 - 内容太大?
【发布时间】:2012-12-03 18:32:05
【问题描述】:

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

    }
});

提前感谢您的任何指点。

【问题讨论】:

  • 如果堆栈溢出是任何指标,复制粘贴代码而不破坏缩进是非常困难的。 :P
  • 哈哈……我的缩进肯定没保留!
  • 您是否遇到超时错误?
  • 如果内容包含 Javascript 或任何破坏附加的内容,则此行为是预期的。在 ajax 发布之后,您在 chrome 检查器/firebug 中看到了什么?您看到任何错误吗?
  • TJ - 这就是问题所在,谢谢!有一个对未定义函数的杂散引用......我之前注意到它,但忽略了它,因为我已经习惯了 JS 完全研磨到最轻微的语法错误停止。内容渲染正确地让我失望。再次感谢!

标签: php javascript jquery


【解决方案1】:

如果我从.append() 函数中删除+content+,则会触发该行后面的警报。这是设计的吗?

这为正在发生的事情提供了一个相当大的线索;这意味着content 内部的某些东西正在导致错误(实际上是抛出了异常),并且可以从控制台看到此错误。

如果没有控制台,您可以将代码包装在 try { } catch 块中,如下所示:

try {
    $('#resultsArea').append('<div id="results_'+flavour+'" style="display:true;">'+content+'</div>');
} catch (e) {
    alert('Oh no, error: ' + e);
}

这应该让您知道content. 出了什么问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-21
    • 2012-05-25
    • 2012-12-18
    • 2014-09-18
    • 1970-01-01
    相关资源
    最近更新 更多