从AJAX调用输出数据到HTML
Outputting data from an AJAX call to HTML
我使用AJAX在按下按钮时将更多文章添加到文章列表中。因此,我的AJAX调用返回的数据包括标题、作者和与文章相关的1到3张图片。下面是我用来输出它的代码,但感觉很笨拙。
在这样的场景中,我需要添加许多带有新信息的新标签,用JavaScript/jQuery打印出HTML的最佳实践是什么?谢谢你的帮助!
另外,我知道有些代码写得不是很好,因为它只是一个初稿,只是为了让东西工作,所以请只回答这个问题,关于打印出HTML或事情将使打印HTML更容易
$j.getJSON(ajaxurl, {action: 'load_articles', issues: $issues}, function(data) {
if (data.message != null) {
alert(data.message);
return
}
list = $j('.all-articles ul');
for (i in data.articles) {
article = data.articles[i];
//Hides articles already on page
if ($j("#" + article.id).size() === 0) {
list.append('<li class="article-preview" id="' + article.id + '">' +
'<h3 class="article-headline">' + article.title + '</h3>' +
'</li>');
current = $j("#" + article.id)
current.append('<p class="authors"></p>');
authors = $j("#" + article.id + " .authors")
for (a in article.authors) {
authors.append(article.authors[a].data.display_name + " ");
}
current.append('<div class="images"></div>');
images = $j("#" + article.id + " .images")
for (i in article.image) {
text = "<div class='image-expand-container'>";
if (i == 0) {
text += ('<img id="' + article.image[i].id + '"class="selected" src="' + article.image[i].medium + '"></img>');
}
else {
text += ('<img id="' + article.image[i].id + '" src="' + article.image[i].medium + '"></img>');
}
text += '<div class="dashicons dashicons-editor-expand"></div></div>';
images.append(text);
}
}
}
您可以采用以下几种方法。
- 正如你在这里所做的,你可以从ajax调用返回数据(例如JSON),然后使用javascript函数通过构建字符串来生成相应的HTML。这,正如你所发现的,往往是混乱的。
- 您可以在服务器端生成实际的HTML,并让ajax调用返回一个HTML片段,然后将其插入到DOM中。这样做的好处是,如果一些HTML是在页面加载时加载的,而另一些是通过ajax加载的,那么您可以使用相同的方法(PHP、XSLT、ASP. HTML)。. NET Razor(任何类型的服务器端模板)生成所有的HTML。
- 你可以使用javascript模板框架将JSON数据转换成HTML。如果你所有的HTML都是通过javascript生成的(例如在单页应用程序中),这可能是你最好的选择。
相关文章:
- 在页面呈现之前更改HTML数据
- 当使用ajax并将html数据保存为对象时,收听浏览器返回按钮.好的或坏的
- 使用数据属性将HTML数据复制到另一个元素
- 使用jQuery在select选项上设置HTML数据属性
- 使用Javascript而不是html数据属性配置Parsley
- 访问HTML数据集
- 如何调用更改事件,例如在 HTML 数据列表上选择
- 检测 点击 在 ANDROID 中使用 HTML 数据查看
- 选择具有特定值的 html 数据属性
- jQuery的HTML数据效果
- 生成html时,在html数据属性中存储由.push()填充的数组
- Powerbuilder/Javascript HTML数据窗口SetItem日期时间失败
- html数据属性在firefox中使用javascript时没有按预期显示,但在chrome中显示正确
- 由于数据中的 & 符号,无法在 C# 上传递整个 html 数据
- 内联 HTML 数据角色<>脚本 jquery:Kendo Widget Initialization
- 如何将带有普通对象集合的 Js 数组对象传递给 ajax post'html' 数据类型中的控制器
- 使用 PrototypeJS 1.6 访问锚点上的 HTML 数据属性
- 如何更改 HTML 数据列表输入上显示的图标?隐藏是可能的,但我可以将其更改为其他一些图标,例如向下箭头
- Android - 如何在运行时生成的HTML数据中加载外部javascript文件
- 从 html 数据设置 jquery 延迟