Tôi có một cuộc gọi ajax nơi tôi đã sử dụng jQuery.ajax() để thực hiện một yêu cầu đến một hành động mvc. Điều này tất cả làm việc tốt. Tuy nhiên do một số biểu mẫu có điều khiển tệp tôi đã thay đổi nó bằng cách sử dụng jQuery.ajax() để sử dụng XMLHttpRequest để gửi nó bằng cách sử dụng API tệp HTML5.XMLHttpRequest không thêm tiêu đề - "X-Requested-With: XMLHttpRequest"
Kể từ khi thực hiện thay đổi này, phương thức hành động MVC không còn xem đó là yêu cầu ajax nữa. Sử dụng Fiddler2 Tôi đã nhận thấy rằng nó không còn thêm "X-Requested-With: XMLHttpRequest" vào yêu cầu và tôi giả định đây là vấn đề.
Biểu mẫu tôi đang cố gắng gửi không có đầu vào tệp trong đó, chỉ các hộp văn bản thông thường, v.v. nhưng tôi đã cố giữ phương thức chung để xử lý cả hai. Sau đây là đoạn code tôi đang sử dụng để gửi yêu cầu 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);
Mã này đã được cung cấp sau đây là một vấn đề tôi đã mà Darin Dimitrov cung cấp giải pháp cho, vì vậy tôi có thể gửi cho các đầu vào tập tin bằng ajax.
Bất kỳ ý tưởng nào tại sao yêu cầu này sẽ không gửi tiêu đề cho cuộc gọi ajax?
Siêu Tôi không biết điều đó. Ngay trước khi gửi, tôi đã thêm vào sau: "AjaxRequestObject.setRequestHeader ('X-Requested-With', 'XMLHttpRequest');" và tôi nghĩ nó hoạt động. – eyeballpaul