【发布时间】:2019-08-23 10:05:33
【问题描述】:
我知道有人提出并回答了类似的问题,但我似乎无法让它们适用于我的问题。
以下是提交表单时发送ajax post的代码
$form.on("submit", function(event) {
event.preventDefault();
$.ajax({
url: url,
data: JSON.stringify({ description: desc }),
type: "POST",
contentType: "application/json",
dataType: "json",
success: function(data) {
$(".list").append(
'<li><input type="checkbox" value="' +
data.id +
'">description</li>"
);
createOnClicks(data.id);
},
error: function(error) {
//list errors },
complete: function() {
//reset form
}
});
});
这是createOnClicks() 函数的一部分:
function createOnClicks(id) {
var listId = "#" + id;
$(listId).on("click", function(event) {
var value = $(this).is(":checked");
if (value) {
console.log("checked");
$.ajax({
url: "/listapi/" + id + "/complete",
type: "POST",
contentType: "application/json",
dataType: "json",
success: function(data) {
console.log(data);
$(listId)
.parent("li")
.addClass("complete");
}
});
} else { ...
}
});
createOnClicks 在页面加载时对存在的元素调用时可以正常工作,但对使用 ajax 帖子添加的元素不起作用。
$(listId) 在createOnClicks() 中调用时返回一个空对象,尽管上面的行中`console.log(listID) 显示了适当的值。
【问题讨论】:
标签: javascript jquery ajax asynchronous post