我一直在尝试使用 Ajax 和 Linq 进行更新,但是 Ajax 调用永远不会到达后面代码的 web 方法。我已经更改了用户类以匹配数据库并使用户对象具有相同的名称,但仍然无法访问后面的代码。我想知道这是否是首选方式?
首页:
<div class="row">
<asp:TextBox ID="txt_name" runat="server" ClientIDMode="Static"/>
</div>
<div class="row">
<asp:TextBox ID="txt_pass" runat="server" ClientIDMode="Static"/>
</div>
<div class="row">
<asp:DropDownList ID="ddl_item" runat="server" ClientIDMode="Static">
<asp:ListItem Text="item 1" Value="Item1" Selected="True"/>
<asp:ListItem Text="item 2" Value="Item2" />
<asp:ListItem Text="item 3" Value="Item3" />
</asp:DropDownList>
</div>
<div class="row">
<asp:Button runat="server" ID="btn_submit" ClientIDMode="Static" Text="GO"/>
</div>
用户上传.js
$(function() {
$('#btn_submit').on('click', function() {
var user = {};
user.name = $('#txt_name').val();
user.Pass = $('#txt_pass').val();
user.Item = $('#ddl_item').val();
$.ajax({
type: "POST",
url: "~/uploadUserAjax/SaveUser",
data: '{user: ' + JSON.stringify(user) + '}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(response) {
alert("user has been added");
}
});
return false;
});
});
上传用户Ajax.aspx.cs
[WebMethod]
[ScriptMethod]
public static void SaveUser(WebformTest.Models.User user)
{
using (var db = new dbDataContext())
{
var insert = new User
{
name = user.name,
pass = user.pass,
Item = user.Item
};
db.Users.InsertOnSubmit(insert);
db.SubmitChanges();
}
}
用户类文件:
public class User
{
public string name { get; set; }
public string pass { get; set; }
public string Item { get; set; }
}
我的数据库文件名与我的用户类文件相同。
我已经更改了几次,在进行了大量谷歌搜索后,它说要让你的类文件名与你的 js 对象文件名相同,我在传递我的 setter 时使用了正确的类文件以获得值进入数据库。想知道我如何检查它是否转到后面代码中的 web 方法。我引用了所有正确的 using 语句。
请您参考如下方法:
您的问题很可能是由于:
url: "~/uploadUserAjax/SaveUser"
jQuery不知道 ~ , 只有 ASP.NET
您可以使用浏览器附带的 developer tools 轻松检测到此问题。 .您可以检查网络和/或控制台选项卡以查找传输和/或 JS 错误。这些开发人员工具在所有现代浏览器(Chrome、FF、IE8+)中都可用,您可以按 F12 打开它们。 .
此外,您应该使用 Visual Studio 调试 ASP.NET 网站本身。的集成 debugging工具。这样你就可以测试 WebMethod已输入。
在jQuery你正在使用 $('#btn_submit')但 asp.net 为该按钮生成另一个 ID。考虑用普通的 HTML 按钮替换按钮。或者只使用 $('#<%=btn_submit.ClientID %>') .
