Выполните итерацию всего элемента ul и вставьте в базу данных с помощью вызова ajax

0

Я новичок в 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!");
            }
        });
    }
  • 0
    Что происходит? Есть ошибки? Какие из предупреждений получили удар? И почему ваша функция возвращает "ложь"?
  • 0
    @Stargazer Thnx за ваш комментарий .. Ошибка не произошла, когда я нажимаю сохранить btn, он возвращается. Возврат false только для проверки .. Спасибо за указание, я удалил это сейчас.
Показать ещё 3 комментария
Теги:
jquery-plugins

1 ответ

1

Создание 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!");
        }
    });
   }

Счастливое кодирование :)

  • 1
    Просто чтобы дополнить, конечно, ваши insertBCCustomFields в вышеупомянутом сценарии должны быть в состоянии правильно обрабатывать отправленные данные json.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню