Javascript 从ajax响应构建html有哪些选项?

Javascript 从ajax响应构建html有哪些选项?,javascript,jquery,html,ajax,json,Javascript,Jquery,Html,Ajax,Json,从返回的ajax响应构建html有哪些选项或库 目前,我正在获取接收到的json数据,将html构建为字符串,并使用jQuery DOM插入函数,但我必须认为有一种更好、更易于维护的方法来完成我正在尝试的工作 例如,我有一个包含项目列表的页面,只有一个缩略图和标题,用户可以单击。单击项目并成功返回json请求后,将显示更详细的项目信息。目前我正在做一些基本上是: build_project = function(data){ var projectHTML = "<div id='pr

从返回的ajax响应构建html有哪些选项或库

目前,我正在获取接收到的json数据,将html构建为字符串,并使用jQuery DOM插入函数,但我必须认为有一种更好、更易于维护的方法来完成我正在尝试的工作

例如,我有一个包含项目列表的页面,只有一个缩略图和标题,用户可以单击。单击项目并成功返回json请求后,将显示更详细的项目信息。目前我正在做一些基本上是:

build_project = function(data){
  var projectHTML = "<div id='projectData_"+data.id+"'>"+data.contents+"</div>";
  return projectHTML;
}
build\u项目=功能(数据){
var projectHTML=“”+data.contents+”;
返回项目HTML;
}
然后将它插入到DOM中它需要去的地方。当不止一个元素时,就会出现问题,有时我必须创建多达6-10个不同的嵌套元素,并出现如下内容:

    projectHTML += "</div>";
  projectHTML += "</div>";
projectHTML += "</div>";
projectHTML+=”;
projectHTML+=“”;
projectHTML+=“”;
我知道mustache.js,但我不确定这是否正是我要寻找的——以及是否还有其他我应该调查的选项


谢谢

您可以在JavaScript中创建
printf
样式方法

你可以过着危险的生活并扩展
字符串
对象(幸运的是,我几天前写了这篇文章)

…或者干脆将其作为一个普通函数,并可能将其假名称空间设置为
util.printf=function(){…}


当然,上面的函数不是真正的
printf()
(它只处理字符串插值),但您可以将其扩展为整数、浮点、填充等。

您可以在JavaScript中创建
printf
样式的方法

你可以过着危险的生活并扩展
字符串
对象(幸运的是,我几天前写了这篇文章)

…或者干脆将其作为一个普通函数,并可能将其假名称空间设置为
util.printf=function(){…}


当然,上面的函数并不是真正的printf()(它只处理字符串插值),但您可以将其扩展为整数、浮点、填充等。

您的思路是正确的。看看jquery.tmpl库


你走在正确的轨道上。看看jquery.tmpl库

您可以尝试使用JQuery模板

“Knockout是一个JavaScript库,可帮助您使用干净的底层数据模型创建丰富、响应迅速的显示和编辑器用户界面。任何时候您的UI部分都会动态更新(例如,根据用户的操作或外部数据源的变化而变化),KO可以帮助您更简单、更易于维护地实现它。”

您可以尝试使用JQuery模板


“Knockout是一个JavaScript库,可帮助您使用干净的底层数据模型创建丰富、响应迅速的显示和编辑器用户界面。任何时候您的UI部分都会动态更新(例如,根据用户的操作或外部数据源的变化而变化),KO可以帮助您更简单、更易于维护地实现它。”

如果您使用ASP.Net,并且如果您不需要客户端上的JSON结果(除了插入DOM),则可以在服务器上呈现html

然后,您可以利用编程语言功能来构建html

最后,返回HTML字符串并将其附加到DOM中

例如,您可以像下面这样创建DOM元素:

var panel = new Panel();
var label = new Label { Text = data.contents };
panel.Controls.Add(label);

return panel.ToHtml(); //use stringwriter

这个技巧在我参与过的几个项目中被证明非常有用。

如果您使用ASP.Net,并且如果您不需要客户端上的JSON结果(除了插入DOM),您可以在服务器上呈现html

然后,您可以利用编程语言功能来构建html

最后,返回HTML字符串并将其附加到DOM中

例如,您可以像下面这样创建DOM元素:

var panel = new Panel();
var label = new Label { Text = data.contents };
panel.Controls.Add(label);

return panel.ToHtml(); //use stringwriter

在我参与的几个项目中,这个技术已经被证明非常有用。

另一个可能更易于维护和测试的选项是远程函数本身(通过ajax调用)返回格式化的html而不是数据。例如,在MVC(例如ASP.NET MVC)中,您可以返回一个视图,脚本将按原样获取该数据,而无需对其进行操作

[AcceptVerbs((HttpVerbs.Get))]
    public ActionResult GetView(string param1)
    {
        var model = new ModelXXX;
        ...
        ...

        return View("ViewName", model);
    }

另一个可能更易于维护和测试的选项是远程函数本身(通过ajax调用)返回格式化的html而不是数据。例如,在MVC(例如ASP.NET MVC)中,您可以返回一个视图,脚本将按原样获取该数据,而无需对其进行操作

[AcceptVerbs((HttpVerbs.Get))]
    public ActionResult GetView(string param1)
    {
        var model = new ModelXXX;
        ...
        ...

        return View("ViewName", model);
    }

还有许多其他模板库,你也可以考虑。仅举几个例子。模板无疑是一条必由之路,而且有一个丰富的模板库生态系统。看一看,挑一个适合你的!还有许多其他模板库,你也可以考虑。仅举几个例子。模板无疑是一条必由之路,而且有一个丰富的模板库生态系统。看一看,挑一个适合你的!