无法从 Javascript 调用 Asp.net 方法

Failed to call Asp.net method from Javascript

本文关键字:Asp net 方法 调用 Javascript      更新时间:2023-09-26

我想从Javascript调用 Asp.Net 函数。我有一个示例,它像这样调用 Asp.net MVC 函数。

@{
    var payUrl = "/recordings/recording-123.wav";
    <!-- saves the wav file to local folder called recodings using a session value to make unique file names -->
}
    function setupRecorder() {
        Wami.setup({
            id: "wami",
            onReady: setupGUI
        });
    }
    function setupGUI() {
        var gui = new Wami.GUI({
            id: "wami",
            recordUrl: "http://localhost:5296/home/Save",
            playUrl: "@payUrl"
        });
        gui.setPlayEnabled(false);
    }

这是来自代码的确切调用

recordUrl: "http://localhost:5296/home/Save",

HomeController 有一个方法保存,在这里调用

public ActionResult Save()
        {
            Request.SaveAs(Server.MapPath("/recordings/recording-123.wav"), false);
            return Json(new { Success = true }, JsonRequestBehavior.AllowGet);
        }

我想要确切的东西 Asp.Net 但是如果有人可以帮助我,我无法找到解决方案,我将不胜感激你这是我项目中唯一剩下的部分,我只需要保存音频。我这样做

<script>
    function setupRecorder() {
        Wami.setup({
            id: "wami",
            onReady: setupGUI
        });
    }
    function setupGUI() {
        var gui = new Wami.GUI({
            id: "wami",
            recordUrl: "Default.aspx/Save",
            playUrl: "/recordings/recording-123.wav"
        });
        gui.setPlayEnabled(false);
    }
</script>

我有一个网络表单默认.aspx它有方法保存

recordUrl: "Default.aspx/Save",

这是确切的默认.aspx.cs方法。我已经尝试过[HttpGet]和[httpPost]都没有对我有用。

 [HttpGet]
[System.Web.Services.WebMethod]
    public void Save()
        {
            Request.SaveAs(Server.MapPath("/recordings/recording-123.wav"), false);
            return Json(new { Success = true }, JsonRequestBehavior.AllowGet);
        }

我认为您的保存方法需要标记为静态,因为它是一个网络方法。只有这样,您才应该能够从JS调用它

  [System.Web.Services.WebMethod]
  public static void Save()
    {
        Request.SaveAs(Server.MapPath("/recordings/recording-123.wav"), false);
        return Json(new { Success = true }, JsonRequestBehavior.AllowGet);
    }