#javascript #jquery #ajax #xmlhttprequest
Вопрос:
Я использовал пользовательский заголовок для каждого XMLHttpRequest следующим образом:
XMLHttpRequest.prototype.newOpen = XMLHttpRequest.prototype.open;
XMLHttpRequest.prototype.open = function(method, url) {
var customValue = 'custom_value';
this.newOpen.apply(this, arguments);
this.setRequestHeader('X-Custom-Headers', customValue);
};
После этого я вызываю функцию Get Jquery следующим образом:
$(function(){
var file = "location/somefile.csv";
$.get(file, { "_": $.now() }, function(vals) {
var csv_arr = $.csv.toArrays(vals);
console.log(csv_arr);
}).done(function() {
alert("SUCCESS");
}).error(function(err) {
alert(err.statusText);
});
})
Но эта функция $.get вызывается бесконечное количество раз. Когда я удаляю пользовательский заголовок для всех запросов, это работает.
Я всегда получаю ошибку превышения максимального размера вызова.
Я делаю что-то не так при настройке пользовательского заголовка XMLHttpRequest
?
Или, что является причиной того, что мой $.get()
запрос вызывается бесконечное количество раз?
Пожалуйста, помогите.
Комментарии:
1. Как называется этот твой код? Например, зависит ли это от нажатия кнопки, загрузки страницы и т. Д.?
2. @loan.burger Он вызывается при загрузке страницы. Как вы можете видеть, функция $.get() вызывается в $(функция())
Ответ №1:
Я некоторое время не использовал jQuery, но в зависимости от того, где вы хотите, чтобы весь этот код формировался, например, при нажатии кнопки или изменении опции выбора и т. Д. Попробуйте ввести свой код в функцию namesa, например:
var csvHelper =
{
readCsv: function() {
var file = "location/somefile.csv";
$.get(file, { "_": $.now() }, function(vals) {
var csv_arr = $.csv.toArrays(vals);
console.log(csv_arr);
}).done(function() {
alert("SUCCESS");
}).error(function(err) {
alert(err.statusText);
});
}
}
Затем вы вызываете его нажатием кнопки или загрузкой страницы, например:
csvHelper.readCsv();
Пример JSFiddle: https://jsfiddle.net/loanburger/1asngkt9/