在不保持/拦截页面加载的情况下进行AJAX调用

时间:2016-05-15 22:35:07

标签: javascript jquery html ajax logic

通过/通过AJAX请求数据的最佳方式是什么,而不保持页面上加载的其他资源/资源的进度。问题在于需要从AJAX调用返回的数据/信息.e.g返回的数据将用于填充/生成HTML页面。

实际例子:

$.get("pageURI", {getVar:getVal}, function( data ){
   var response = data;
});
  1. 您可以使用$(document),ready(function(){})包装代码;在文档准备就绪时生成HTML,但同样,在AJAX调用中没有包围页面生成逻辑,因此在$ .get(...)...内部,如何确保页面仅填充您的内容因此,只有当您知道响应具有预期数据时,才会这样!undefined。
  2. 我没有代码在AJAX调用包装器内的问题,但如果你有很多代码依赖于响应,换句话说你有大约10-15个长函数和其他逻辑,那该怎么办呢?建议让他们围绕你的AJAX电话?
  3. 我也明白可以将响应设置为窗口属性(window.response)/全局变量,只有在页面完全加载后才使用它,例如$(window).bind(“load”,function(){}) ,因为它可能在整个程序生命周期的各个地方使用,但这是一个很好的编码实践吗?
  4. 感谢您的回复。

1 个答案:

答案 0 :(得分:0)

您可以根据需要呈现最小页面,然后执行Ajax调用。当Ajax调用完成时,jQuery为您提供了一个很好的回调函数,您可以使用它来启动依赖于它的其他函数。考虑一下:

var jqxhr = $.get( "/twiddle-bits", function(data, status, jqXHR) {
  // Here is where you call functions that do the second-stage data population
  apply_changes_after_ajax_call();
  update_some_other_things();
})
.fail(function() {
  show_error_messages();
});

这应该做你想要的。 HTML页面将在Ajax调用之前呈现,您可以在返回结果后更新DOM。就像这样的动态页面一样。