如何在 asp.net 中使用 XMLHttpRequest 从具有 Post 方法的页面获取响应文本?

How to get responsetext from a Page with Post method using XMLHttpRequest in asp.net?

我有一个 web page 发送 video file/blob 另一个网页 在使用 FormData 使用 POST 方法和 XMLHttpRequest。我想 return 调用函数中的 Posted URL 作为字符串 的响应。即在成功上传文件后,我想 return 字符串给调用者。

index.aspx:

function SendFile(blob)
{
var file = new File([blob], "testfile123.webm");
var oData = new FormData();
oData.append("file", file,"testfile.webm");
var oReq = new XMLHttpRequest();
oReq.open("POST", "upload.aspx", true);
oReq.onload = function (oEvent) 
{
  if (oReq.status == 200) 
  {
    alert("Uploaded"+oReq.responseText);
  } 
  else {
    alert("Error");                     
  }
};
oReq.send(oData);
}

Upload.aspx:

protected void Page_Load(object sender, EventArgs e)
{
     string folderPath = GetUploadFolderPath();
     string filename = DateTime.Now.ToString("dd-MM-yyyy-HH-mm-ss") + ".webm";  
     HttpFileCollection fileCollection = Request.Files;
     for (int i = 0; i < fileCollection.Count; i++)
     {
         HttpPostedFile postedFile = fileCollection[i];
         var filePath = folderPath + filename; //postedFile.FileName;
         postedFile.SaveAs(filePath);

     }             
 }

在上面的代码中,文件是在指定位置创建的,所有工作都有效 fine.I 知道它在 Page_Load 事件中是不可能的。请建议在文件上传后发送 responsetext/string 的正确方法。

感谢帮助。

这是一个 scraped 一起示例,说明如何使用 jquery.ajax 在 aspx 中定位特定功能 使用 vb.net。可悲的是,我不精通 C#.

Note that if you are using an ancient version of .net (two or lower), you have to add System.Web.Extensions in your web.config to make it work. Depending on the IIS either as httpModules or as modules.

AJAX.aspx

<WebMethod(EnableSession:=True)> _
Public Shared Function abc(def As String) As Boolean
    ''REM: Do stuff
    Return True
End Function

xhr 调用使用 jquery

$.ajax({
    type: "POST",
    url: "AJAX.aspx/abc",
    data: "{'def':'test'}",
    contentType: "application/json; charset=utf-8",
    dataType: "text",
    success: function(response){...},
    error: function(jqXHR, textStatus, errorThrown){...}
});

但是,我仍然建议使用通用处理程序,如 here 所示。它更干净、更纤薄,并且可以更好地控制您实际想做的事情。 System.Web.Extensions 也不是必需的。