表格:
<form action="upload-document.aspx" onsubmit="sendAndClose();" method="post" enctype="multipart/form-data">
<input name="fileToUpload" id="fileToUpload" type="file" />
<input type="submit" name="submit" value="Send" />
</form>
阿贾克斯:
function sendAndClose() {
currentUrl = location.protocol + '//' + location.host + location.pathname;
var data = new FormData();
var file = $("#fileToUpload")[0].files[0];
data.append("name", file.name);
data.append("size", file.size);
data.append("type", file.type);
data.append("file", file);
$.ajax({
type: "POST",
url: currentUrl + '/Persist',
dataType: 'json',
data: data,
cache: false,
contentType: false,
processData: false,
success: function () {
parent.$.fancybox.close();
},
error: function (request, error) {
alert("[" + error + "] - FAIL: " + request.responseText);
parent.$.fancybox.close();
}
});
}
代码隐藏:
[WebMethod]
public static bool Persist(object data)
{
return true;
}
提交表单时,它会运行 ajax 并在进入 webmethod 之前直接进入错误回调。谁能告诉我为什么?
此外,在“var 文件”之后,我收到了显示文件名、大小等的警报……所以它获取了文件,问题是 ajax 拒绝与代码隐藏通信。