c# - 无法在 .Net (C#) 中使用 ajax 发送基本的非 MVC 表单

标签 c# asp.net ajax forms

我已经多次看到这个问题的答案,但大多数都与 MVC Controller 有关。

我在尝试使用 Ajax 发送表单时遇到的问题是,在 Debug模式下,执行流程不会到达我在后面的代码中设置的断点。另外,我注意到当我点击提交按钮时,页面刷新得非常快;我虽然 ajax 的整个想法是不刷新页面。

这是我的index.aspx

<head runat="server">
    <title></title>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
    <script src="ajaxform.js" type="text/javascript"></script> 
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <fieldset class="fs1">

            <input id="inputData" tabindex="1" name="theinputData" class="field" placeholder="Paste URL, docId or docSetId" runat="server"/>
            <input id="form1Send" type="submit" class="button" onclick="submit()"/>

        </fieldset>
    </div>
    </form>
</body>

这是我的 ajaxform.js 的代码

 $(document).ready(function () {

     $('#form1').submit(function (e) {
         
         var formData = new FormData(this);

         $.ajax({
             url: 'index.aspx/OnSubmit',
             type: "POST",
             dataType: "json",
             contentType: "application/json; charset=utf-8",
             data: formData,
             contentType: false,
             processData: false,
             success: function (result) {
                 alert("We returned: " + result);
             },
             error: function (result) {
                 alert("Error");
             }
         });
         e.preventDefault();
     });
 });

最后,这是我背后的代码

namespace mySpace
{
   public partial class index : System.Web.UI.Page
   {
       protected void Page_Load(object sender, EventArgs e)
       {

       }

       [WebMethod]
       public static string OnSubmit()
       {
           return "I was in code behind";
       }

   }
}

我的断点在返回线上。为什么程序永远不会到达 WebMethod?

最佳答案

您的代码有几个问题:

  1. 您重复声明了处理表单的内容。您的 form1send 按钮中有 onclick="submit()" 以及您通过 jQuery 连接的表单提交处理程序
  2. 您的 JavaScript 处理程序的内容略有偏差,例如您设置了两次 contentType

这是 在我的机器上运行 的 JavaScript 的简化版本:

 $(document).ready(function () {

     $('#form1').submit(function (e) {

         $.ajax({
             type: "POST",
             url: "index.aspx/OnSubmit",
             contentType: "application/json; charset=utf-8",
             data: '{}',
             dataType: "json",
             success: function (response) {
                 alert(response.d);
             },
             failure: function (response) {
             }
         });
         e.preventDefault();
     });
});

注意:我将此($.ajax 调用的内容)基于我在其他地方找到的代码示例,这就是参数和参数顺序与您的不同的原因。

如果您的应用有一个 RouteConfig.cs 文件,您可能还需要将 settings.AutoRedirectMode = RedirectMode.Permanent; 更改为 settings.AutoRedirectMode = RedirectMode.Off; 如果您在浏览器开发人员工具控制台中看到 HTTP 401 错误,请求 index.aspx 中的 WebMethod 装饰方法。

关于c# - 无法在 .Net (C#) 中使用 ajax 发送基本的非 MVC 表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46032531/

相关文章:

c# - 在 Oracle 中生成 .Net 报价

javascript - 如何验证在javascript中只接受第一个字母作为字符并保留为数字

asp.net - TreeView PopulateOnDemand 不使用自定义 ImageURL

javascript - Highstock 每秒更新一次图表

python - web2py 中的 ajax 响应

asp.net-mvc - 如何在 $.ajax 回调中 RedirectToAction?

c# - 编辑 DataGridTextColumn 时在当前行上执行方法

c# - SignalR 在升级时导致重大问题

c# - 如何返回视频(flv)路径以在flowplayer中显示?

c# - 在 ASP.NET MVC 中获取 Foreach 循环中的项目总和