JQuery ajax не отправляет полные данные в POST в случае больших данных - PullRequest
0 голосов
/ 05 июля 2018

В моем приложении я вызываю API с типом POST, используя функцию jquery $ .ajax. Когда данные большие, это усеченная часть данных. Но когда я отправляю те же данные с помощью POSTMAN, тогда он работает нормально, и сервер получает полный запрос. Проблема приходит только тогда, когда я вызываю API в JavaScript с использованием Jquery. Мое приложение встроено в Электрон. Ниже приведен код для вызова API:

$.ajax({
                async: false,
                type: "POST",
                url: 'API_URL_HERE',
                headers: {
                    'Accept': 'application/json',
                    'Authorization': authToken,
                },
                data: {
                    var1: "123456789",
                    var2: 10,
                    var3: {
                        'var3_data': array_containing_strings,
                        'var3_version': 20
                    },
                    var4: 80,
                    var5: "123456789"
                },
                success: function (data) {
                        // Some operation here
                },
                error: function (xhr, ajaxOptions, thrownError) {
                        // Some operation here
                }
});

Я переименовал имена переменных. Проблема в переменной array_conisting_strings . Это массив, который содержит строки. Когда array_conisting_strings содержит так много строк, сервер не получает var4 и var5 переменных. Я попытался с массивом длиной 13000, в то время как каждый элемент массива является строкой длиной 400 символов (поэтому размер = 13000 * 400 = 5200000). Как ни странно, данные, отправляемые на сервер, имеют допустимый формат JSON, в запросе отсутствуют только переменные. Еще одна странная вещь: когда я открываю вкладку сети в консоли разработчика, она показывает полные данные в сетевом вызове, единственный сервер не получает их. Конфигурация сервера также не является проблемой, поскольку тот же вызов API с теми же данными работает нормально при использовании Postman.

1 Ответ

0 голосов
/ 05 июля 2018

добавить dataType: 'json' и contentType: 'application / json' к вашему запрос ajax.

$.ajax({
                    async: false,
                    type: "POST",
                    url: 'API_URL_HERE',
                    headers: {
                        'Accept': 'application/json',
                        'Authorization': authToken,
                    },
                    dataType:'json',
                    contentType:'application/json'
                    data: {
                        var1: "123456789",
                        var2: 10,
                        var3: {
                            'var3_data': array_containing_strings,
                            'var3_version': 20
                        },
                        var4: 80,
                        var5: "123456789"
                    },
                    success: function (data) {
                            // Some operation here
                    },
                    error: function (xhr, ajaxOptions, thrownError) {
                            // Some operation here
                    }
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...