Я новичок в jquery. Я хочу вставить все элементы списка ul. Я попробовал следующее, но его не работает. Кто-то может мне посоветовать, что случилось с кодом, так как я сделал " async: false", но он все еще не работает
$('#sortable li').each(function () {
items += $(this).text();
insertCustomBCFields($(this).text(), plu);
});
И insertCustomBCFields ftn ниже
function insertCustomBCFields(field, plu) {
alert(field + plu);
$.ajax({
type: "POST",
url: 'ProductDefinition.aspx/insertBCCustomFields',
data: "{'field':'" + field + "', 'plu':'" + plu + "'}",
contentType: "application/json; charset=utf-8",
async: false,
dataType: "json",
success: function (data) {
alert("Success");
},
failure: function (response) {
alert("Insert Failed!");
}
});
}
Создание ajax-вызова с помощью async: false,
приведет к синхронному вызову. эта опция должна быть установлена в true, чтобы сделать асинхронный вызов async: false,
если не требуется синхронный вызов.
Я вижу, что ваш вызов функции ajax каждый раз, когда li
находится в вашей структуре DOM (теперь это очень плохо с точки зрения производительности), ну, это не так хорошо, вместо этого вы можете сделать вызов ajax, как только все элементы будут повторяться, что-то вроде этого
var arr="";
var index=0;
$('#sortable li').each(function () {
items += $(this).text();
arr+="{field"+index+":" + field + , "plu"+index+":" + plu + "}";
});
insertCustomBCFields(arr);
Аналогичным образом измените также вызов ajax
function insertCustomBCFields(arr) {
alert(field + plu);
$.ajax({
type: "POST",
url: 'ProductDefinition.aspx/insertBCCustomFields',
data: {'arr':arr},
contentType: "application/json; charset=utf-8",
async: false,
dataType: "json",
success: function (data) {
alert("Success");
},
failure: function (response) {
alert("Insert Failed!");
}
});
}
Счастливое кодирование :)