我已经多次看到这个问题的答案,但大多数都与 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?
最佳答案
您的代码有几个问题:
- 您重复声明了处理表单的内容。您的
form1send
按钮中有onclick="submit()"
以及您通过 jQuery 连接的表单提交处理程序 - 您的 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/