Jquery中是否有async:false的替代方法?
Is there an alternative to async:false in Jquery?
我得到同步XMLHttpRequest在主线程是不赞成的,因为它对最终用户的体验有害的影响。我已经看了这个帖子,但找不到任何适合我需要的东西。
async: false ajax的替代方案
$(docucment).ready(function(){
var obj=AppendFileList(10);
$.each(obj.Table, function (key, value) {
//some code to do some task
});
});
function AppendFileList(lotid) {
$.ajax({
type: "POST",
url: "XYZ/GetAttachements",
data: JSON.stringify({ LotId: lotid, GUID: $('#hidnuniqueid').val() }), // LotId: arr1[1],
contentType: "application/json; charset=utf-8",
dataType: "json",
async: false,
success: function (data, status) {
var obj = jQuery.parseJSON(data.d);
console.log(obj);
return obj;
},
failure: function (data) {
console.log(data);
},
error: function (data) {
console.log(data);
console.log(data.Message);
}
});
}
我不想保持ajax()方法在一个单独的函数外,我已经在我的例子中显示,这样我就不必一次又一次地编写ajax调用。这可能吗?
所有依赖于AJAX请求结果的逻辑都应该进入success
回调。要实现这一点,可以将一个匿名函数传递给AppendFileList()
函数。试试这个:
$(document).ready(function(){
AppendFileList(10, function(data) { // data = the JSON retrieved
$.each(obj.Table, function (key, value) {
// some code to do some task
});
});
});
function AppendFileList(lotid, callbackFn) {
$.ajax({
type: "POST",
url: "XYZ/GetAttachements",
data: {
LotId: lotid,
GUID: $('#hidnuniqueid').val()
},
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data, status) {
callbackFn(data); // use your callback here, passing it the retrieved data
},
error: function (data) {
console.log(data);
console.log(data.Message);
}
});
}
注意,你不需要使用JSON.stringify
来发送data
或反序列化响应,因为jQuery会自动为你做这些,并且$.ajax()
方法在其设置中没有failure
属性。
相关文章:
- electronic BrowserWindow的最小高度和宽度在hide()show()方法之后不起作用
- 捕捉到最近的标记方法总是返回false
- Android WebView 应该覆盖 UrlLoad,我应该调用超级方法还是只返回 false
- 在默认情况下将可枚举设置为 false 的 JS 中创建对象属性的其他方法是什么
- Ext.window.MessageBox 可拖动 false,调用隐藏方法时出错
- Jquery AJAX 提交表单,即使 confirm() 方法为 false
- 如何使用Angular 1.5 component()方法将scope设置为false
- 按下按钮我的网页正在重新加载?我尝试过从js返回false之类的方法,但仍然没有解决方案
- 监视一个方法与西农.方法绑定到事件侦听器.方法已执行,但.calledOnce为false
- 在这种情况下,java脚本中对象方法的比较返回false
- Coffeescapet类方法总是返回false
- Backbonejs只有在传入async:false作为fetch()方法的参数时才会获取值
- JQuery美元.包含总是返回false的方法
- JavaScript -内部的JavaScript排序方法对数字数据进行排序- True或False
- 当返回false时,JQuery验证自定义方法不显示
- jQuery如何在$.ajax方法中实现async:false
- Jquery中是否有async:false的替代方法?
- 根据对象映射检查数组中是否有任何值为false的最有效方法
- Bcrypt-nodejs比较方法每次返回false
- 更简单的方法是让RegExp.test()对空值返回false