Javascript Synchronization with JSON Requests
Javascript Synchronization with JSON Requests
如何确保一段代码在执行另一段代码之前已经完全执行?我正在向服务器发送一些 ajax 请求,然后使用返回的数据生成网页的其余部分。问题是,我需要在网页中拥有所有这些数据才能继续其余代码,因为该代码将影响已生成的内容,并且该代码在 JSON 请求之前运行并且所有这些都已完成......有什么方法可以确保这种情况不会发生吗?我设法通过执行请求然后要求用户按下按钮来解决它,但这是一种完全没有意义的方法。
有什么想法吗?
下面是一些代码: 问题是第二行在第一行之前执行(有很多类似的 JSON 函数调用)。
$.getJSON(url, function(data){ $("#mycontent").append("..... stuff here...... create loads of dibs with class set to mydivclass"); });
...
$("div.mydivclass").hide();
不幸的是,我无法使用 ajax 同步属性,因为:"数据类型:"jsonp"请求不支持同步操作"
如果您使用的是 jQuery 1.5+,则可以使用延迟来解决您的问题:
function first_ajax_request() {
return jQuery.ajax(
// Your settings here
success: success_function_1
);
}
function second_ajax_request() {
return jQuery.ajax(
// Your settings here
success: success_function_2
);
}
function final_sucess_callback() {
// Do all your display work.
}
jQuery.when(first_ajax_request(),
second_ajax_request()).then(final_success_callback);
有一篇关于这个主题的优秀文章,你也应该阅读埃里克·海恩兹(Eric Hynds)的文章。 他举了一些例子,说明你试图解决的问题类型。
jQuery请求默认是异步的,所以你的代码不会等待响应,所以你无法保证请求后的代码会在响应后执行,
所以你可以通过设置异步属性false来设置请求同步,现在请求是同步的,你可以保证其余的代码会在服务器响应后执行,喜欢这个。
$.ajax({
url: "page.php",
processData: false,
data: xmlDocument,,
async:false,
success: handleResponse
});
相关文章:
- jQuery匹配JSON对象的部分文本
- 在循环中分配json值时,值被覆盖
- 需要帮助设置json数组
- 如何在Javascript中将JSon对象转换为数组
- 我可以在json对象中添加一个函数吗
- 使用JS将数组转换为json对象
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 使用JQuery解析JSON嵌套数组
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- 如何使用json将对象列表从java转换为javascript
- 如何使用 node.js 比较两个 json 数组
- 如何将JSON数据导入我的ejs模板
- 区分JSON中的矩阵和列表列表
- 不显示带有本地json文件数据的谷歌地图脚本
- 如何将json数据显示为html
- 如何为json对象中的段发送array[]
- 根据id将json数组组合为一个json数组
- Json数据包含日期和时间格式
- 将Python Requests(在Django views.py中)Json数据传递给Javascript
- Javascript Synchronization with JSON Requests