点击提交ajax没有执行,请问我是哪里出错了
前台
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<br />
邮箱
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<br />
<asp:Button ID="Button1" runat="server" Text="保存"/>
<script>
$(function () {
$("#Button1").click(function () {
$.post("userData.aspx/test", { phone: $("#TextBox1").val(), email: $("#TextBox2").val() },
function (data, status) {
$("#TextBox1").val() = data.split(",")[0];
$("#TextBox2").val() = data.split(",")[1];
alert(status);
});
});
});
</script>
后台
[WebMethod]
public void test(string phone,string email)
{
db da = new db();
da.openDatabase();
da.sql = "update [dbo].[test1] set phone='" + phone + "',email='" + email + "' where userName='" + Session["userName"] + "'";
da.cmd = new SqlCommand(da.sql, da.conn);
da.cmd.ExecuteNonQuery();
da.conn.Close();}
在浏览器里看看这个页面生成的HTML源代码, <asp:Button ID="Button1" runat="server" Text="保存"/>的ID很可能不是Button1了,那么你JS脚本中的$("#Button1")就什么都没找到。
另外,关键的一点:你的Button1是一个服务器控件,一般情况下被点击时会导致页面立即回发(PostBack),然后这个页面在浏览器端会被重新加载(表单提交给当前页自身)。这样不管你之前的AJAX请求发没发出去,之前的页面已经被浏览器卸载了,重新加载后的页面页收不到ajax的响应。
so,,,,,,
此ID
(WebForms控件ID)非彼id
(前端html控件),添加ClientIDMode="Static"
可以让它们统一
<asp:Button ID="Button1" runat="server" Text="保存" ClientIDMode="Static"/>
浏览器F12打开调试器,看看是否有数据正确发到后台
服务器控件生成的ID和前端控件的ID不一样的。整明白ID的区别
$("#Button1") 改成 $("#<%= Button1.ClientID %>")