我有一个ajax调用,我使用jQuery.ajax()向mvc操作发出请求.这一切都很好.但是由于某些形式具有文件控件,我将其从使用jQuery.ajax()更改为使用
XMLHttpRequest使用
HTML5 File API发送它.
由于进行此更改,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);
该代码是在Darin Dimitrov提供了解决方案的问题之后提供的,所以我可以通过ajax发送文件输入.
任何想法为什么这个请求不会发送一个ajax调用的头?