У меня есть вызов ajax, где я использовал jQuery.ajax(), чтобы сделать запрос к действию mvc. Все это прекрасно работало. Однако из-за некоторых форм, имеющих файловый контроль, я изменил его с помощью jQuery.ajax() на использование XMLHttpRequest для его отправки с использованием API файлов HTML5.XMLHttpRequest не добавляющий заголовок - «X-Requested-With: XMLHttpRequest»
С момента внесения этого изменения метод действия MVC больше не видит его как запрос ajax. Используя Fiddler2, я заметил, что он больше не добавляет «X-Requested-With: XMLHttpRequest» к запросу, и я предполагаю, что это проблема.
Форма, которую я пытаюсь отправить, не содержит входной файл, только обычные текстовые поля и т. Д., Но я пытался сохранить общий метод для работы с обоими. Ниже приведен код, я использую, чтобы отправить запрос Ajax:
// get the edit tender form
var $Form = $Button.closest('form');
var Url = $Form.attr('action');
var AjaxRequestObject = new XMLHttpRequest();
var FormDataToSend = new FormData();
$Form.find(':input').each(function() {
if ($(this).is('input[type="file"]')) {
var files = $(this)[0].files;
if (files.length > 0) {
FormDataToSend.append(this.name, files[0]);
}
} else {
FormDataToSend.append(this.name, $(this).val());
}
});
AjaxRequestObject.open('POST', Url, true);
AjaxRequestObject.onreadystatechange = function() {
if (AjaxRequestObject.readyState == 4) {
// handle response.
if (AjaxRequestObject.status == 200) {
if (!AjaxErrorExists(AjaxRequestObject.responseText,)) {
alert("success");
console.log(AjaxRequestObject.responseText);
}
else {
alert('failure');
}
}
else {
alert('failure');
}
}
};
AjaxRequestObject.send(FormDataToSend);
Этого код был предоставлен после проблемы я имел который Дарина Димитрова обеспечила решение, чтобы я мог отправить входы файлов с помощью AJAX.
Любые идеи, почему этот запрос не отправил заголовок для вызова ajax?
супер я не знаю, что. Непосредственно перед отправкой я добавил следующее: «AjaxRequestObject.setRequestHeader (« X-Requested-With »,« XMLHttpRequest »); и я думаю, что это сработало. – eyeballpaul