如何在 $ 上创建 DOM 元素.Ajax() Success using jquery .
How to create DOM elements on $.Ajax() Success using jquery ?
我正在创建一个动态的checkbox
列表$.ajax
:
function load() {
$.ajax({
type: "POST",
url: "*************",
data: "************",
dataType: "json",
contentType: "application/json; charset=utf-8",
error: function (x, e) { alert(e.responseText); },
success: function (objTrendList) {
$.each(objTrendList, function (index, value) {
// append the checkbox panels to tool div
$('#tools').append('<input type="checkbox" id="checkbox_' +
value.LngTrendID + '" checked="checked" value="0" /> <div
style="display:inline;">' + value.StrTrendName + '</div><br />');
});
}
});
}
$(document).ready(function () {
load();
console.log($('#tools :checkbox')); // i know I don't get any thing here
because the this line is called before the ajax function
});
我知道我对控制台.log行没有任何了解,因为 this 行是在 ajax 函数之前调用
的问题如何先加载 ajax 函数,尽管当我这样做时$(document).ready()
它将最后运行谢谢
返回 ajax 调用并使用 $.ajax 中已经内置的延迟对象:
function load() {
return $.ajax({
type: "POST",
url: "*************",
data: "************",
dataType: "json",
contentType: "application/json; charset=utf-8",
error: function (x, e) { alert(e.responseText); },
success: function (objTrendList) {
$.each(objTrendList, function (index, value) {
// append the checkbox panels to tool div
$('#tools').append('<input type="checkbox" id="checkbox_' +
value.LngTrendID + '" checked="checked" value="0" /> <div
style="display:inline;">' + value.StrTrendName + '</div><br />');
});
}
});
}
$(document).ready(function () {
load().done(function() {
console.log($('#tools :checkbox')); // i know I don't get any thing here
});
});
日志中没有任何内容的原因是 $.ajax 是异步的(AJAX 中的第一个"A"代表"异步")。这意味着当你调用load()
函数时,它会触发$.ajax
调用,但在load()
返回之前不会等待$.ajax
调用返回(这就是为什么你必须指定一个success
和error
函数,以便它知道当它实际返回时该怎么做)。
我们可以查看代码如何执行的时间表:
- 加载()
- $.ajax()
- 返回(空)
- console.log()
- (一些不确定的时间后) 成功()
$.ajax()
返回一种对象类型,该对象知道何时从调用中返回。因此,您可以对对象调用.done()
并在该函数中执行代码,该代码将等到success()
运行之后。
因此,如果您返回$.ajax
调用,您将能够调用.done()
并使用新添加的输入执行操作。
function load() {
return $.ajax({...});
}
$(document).ready(function () {
load().done(function(){
console.log($('#tools :checkbox'));
});
});
相关文章:
- jquery ajax success functions not executing
- 当一个ajax是SUCCESS时,下一个加载
- jquery ajax success中的参数
- jQuery.parseJSON 不适用于 Ajax Success
- 为什么我的 javascript 函数在 ajax.success 之后不调用
- Jquery ajax 响应不调用 Success 方法
- Parametrizable success function for jQuery ajax call
- ajax success(data) to variable += data
- Jquery $.ajax 获取响应与将“this”对象嵌套传递到“success”回调函数冲突
- Ajax success: {return false;}
- 内线.当JSON返回“success”时,Ajax.request将成功:false
- JS $.get Success rather then $.ajax
- 无法将ajax:success绑定到使用form_for..创建的表单:remote=>是的
- Call ajax.fail() from ajax.success()
- 从$ajax.success调用方法时未定义
- AJAX“success"在返回响应之前执行
- 使用ajax success:function(data)对文档准备jquery函数
- JQuery AJAX success + fadeIn
- JQueryUI不存在于ajax.success中
- 将Ajax success中的var使用到另一个Ajax success中