【问题标题】:Including HTML in an AJAX JSON response在 AJAX JSON 响应中包含 HTML
【发布时间】:2013-10-09 03:54:17
【问题描述】:

简要说明

我有一个当前正在通过 AJAX 加载的表单。理想情况下,我会使用 jQuery load() 方法,但是,这个请求稍微复杂一些,因为我还需要检索单个属性,而不仅仅是一个大的 HTML 块。

所以,我的脚本看起来像这样(简化):

$.ajax({
    url: url,
    dataType: 'json',
    success: function(data){
        // Set the width of the form
        $('.form').css({
            width: data.width
        })
        // Load the form into the popup
        $('.form').html(data.html);
    }
});

我的问题

我不确定在 JSON 响应中包含我的 HTML 标记是否是个好主意...

  1. 我的上述想法是否正确?
  2. 还有其他选择吗?
  3. 在 JSON 请求中存储大量 html 时会遇到限制吗?

请注意

我当然知道我可以使用 javascript 构建标记,但是,由于有多种表单并且所有表单都非常大,因此构建表单服务器端要容易得多。更不用说它使调试/开发/维护变得更加容易......

此外,我的网站目前 javascript 非常繁重,因此我希望尽可能减少所需的 js。

【问题讨论】:

  • 它是一个字符串,所以包含它没有问题。
  • 这看起来非常好......我知道没有与大小相关的问题......我可以建议的一个小改进是链接 jQuery,这样选择器就不会执行两次...... .喜欢$('.form').css(...).html(...)
  • @jsmorph 谁是杰森?
  • @jsmorph 你知道dataType 是什么吗?
  • @epascarello 感谢您的意见。根据您的积极反馈,我假设你们都会在相同的情况下使用相同的方法?

标签: javascript jquery html ajax json


【解决方案1】:
  1. 您可以将 html 包含在 json 对象中,只需确保转义所有引号和其他特殊字符。
  2. 您最好使用两个请求,一个加载 html 表单,另一个获取您需要的数据。这将使代码更简洁、更易于维护。

【讨论】:

  • 这实际上是我的想法,但缺点(显然)是有 2 个请求!
  • @BenCarey -- 虽然有 2 个请求,但易于维护的代码还有很长的路要走 :)
  • @BenCarey 是的,但是当性能不是问题时,可维护的代码胜过性能,如果/当性能成为问题时,您可以在以后轻松重构第二个请求
  • @NicolásStraubValdivieso 非常真实!可悲的是,性能已经是一个问题,因为我的网站使用了大量的 javascript,因此,只要有可能,我就会尽量减少它:-)
  • 观看我们的尺码。如果从服务器返回的数据太多并且服务器施加了限制,您可能会被意外捕获。例如:stackoverflow.com/questions/5902540/…
猜你喜欢
  • 1970-01-01
  • 2011-06-15
  • 2014-10-07
  • 1970-01-01
  • 2014-04-05
  • 2020-01-09
  • 2021-01-16
  • 2018-03-25
相关资源
最近更新 更多