ajaxForm
не отправляет запрос AJAX.Это улучшает форму.Если вы хотите форсировать отправку AJAX, вы должны использовать ajaxSubmit
:
$(function() {
// AJAXify the form
$('#fileUploadForm').ajaxForm({
url: '/Home/Upload/',
method: 'POST',
beforeSubmit: ShowRequest,
success: SubmitSuccesful,
error: AjaxError
});
});
// the next functions could be declared outside of the document.ready handler
function subm() {
$('#fileUploadForm').ajaxSubmit();
}
function ShowRequest(formData, jqForm, options) {
var queryString = $.param(formData);
alert('BeforeSend method: \n\nAbout to submit: \n\n' + queryString);
return true;
}
function AjaxError() {
alert("An AJAX error occured.");
}
function SubmitSuccesful(responseText, statusText) {
alert("SuccesMethod:\n\n" + responseText);
}
$("#uploadLink").click(function () {
// set type
$("input[name=hiddenField]").val("Type1");
subm();
return false;
});
Также, почему вы жестко задаете URL и метод запроса AJAX.Сделайте это при создании вашей формы:
<% using (Html.BeginForm("Update", "Home", FormMethod.Post, new { enctype = "multipart/form-data", id = "fileUploadForm" })) { %>
<input type="file" id="postedFile" name="postedFile" />
<input type="hidden" name="hiddenField" />
<a id="uploadLink">upload type 1</a>
<a id="uploadLink2">upload type 2</a>
<a id="uploadLink3">upload type 3</a>
<% } %>
, а затем просто:
$(function() {
$('#fileUploadForm').ajaxForm({
beforeSubmit: ShowRequest,
success: SubmitSuccesful,
error: AjaxError
});
});
Это будет гарантировать, что ваше приложение будет работать независимо от того, где оно размещено.Потому что, если вы жестко закодировали URL-адрес, как вы это сделали, и развернули его в виртуальном каталоге в IIS, он больше не будет действительным.