Javascript ajax post方法导致页面重新加载而不回发
我对ajax/ASP POST的行为感到非常困惑。 我有一个带有HTML按钮的表单(ASP页面的默认表单)。使用Javascript ajax post方法导致页面重新加载而不回发,javascript,jquery,asp.net,ajax,Javascript,Jquery,Asp.net,Ajax,我对ajax/ASP POST的行为感到非常困惑。 我有一个带有HTML按钮的表单(ASP页面的默认表单)。使用jQuery我在click事件中做了一些事情,然后对WebMethod进行了ajax POST调用: <form runat="server" id="formRegistration" autocomplete="off" action=""> ...other form controls <button id="btnSend" type="but
jQuery
我在click事件中做了一些事情,然后对WebMethod
进行了ajax POST调用:
<form runat="server" id="formRegistration" autocomplete="off" action="">
...other form controls
<button id="btnSend" type="button" class="btn btn-success">Send</button>
</form>
$("#btnSend").click(function (e) {
e.preventDefault();
// some validations
$.ajax({
type: 'POST',
traditional: true,
url: 'Default.aspx/Submit1',
data: JSON.stringify(myData),
contentType: "text/plain",
dataType: "text",
success: function (msg) {
},
error: function () {
}
});
return false;
});
protected void Page_Load(object sender, EventArgs e)
{
System.Diagnostics.Debug.WriteLine("IsPostBack = " + IsPostBack.ToString());
}
[WebMethod]
public static bool Submit1(string json)
{
System.Diagnostics.Debug.WriteLine(json);
return true;
}
…其他表单控件
发送
$(“#btnSend”)。单击(函数(e){
e、 预防默认值();
//一些验证
$.ajax({
键入:“POST”,
传统的:是的,
url:'Default.aspx/Submit1',
数据:JSON.stringify(myData),
contentType:“文本/普通”,
数据类型:“文本”,
成功:功能(msg){
},
错误:函数(){
}
});
返回false;
});
受保护的无效页面加载(对象发送方、事件参数e)
{
System.Diagnostics.Debug.WriteLine(“IsPostBack=“+IsPostBack.ToString());
}
[网络方法]
公共静态bool Submit1(字符串json)
{
System.Diagnostics.Debug.WriteLine(json);
返回true;
}
- HTML按钮
- 类型=按钮
- 返回错误
WebMethod
,而是使用IsPostBack=false
我只想在不重新加载页面的情况下发布字符串。您可以尝试使用链接而不是按钮,并将“form”更改为“div”
发送
当你说你的页面正在重新加载时,当你有一个AJAX调用时,这是没有意义的。您的$(“#btnSend”).click()是否正确触发?您是否尝试放置一些警报?是的,在该函数中,我执行其他操作,如验证,这些操作实际上有效。data:JSON stringify和dataType:“text”??用这个替换ajax调用,然后尝试..$。ajax({type:'POST',url:'Default.aspx/Submit1',数据:JSON.stringify(myData),contentType:'application/JSON;charset=utf-8',数据类型:“JSON”,成功:函数(msg){},错误:函数(){});我之所以设置这些值,是因为我发送的是普通字符串,而不是json对象。如果要使用您的语法,我必须修改Submit1签名以接收所有json对象。我不想这样做。不,你不需要更改你方法的签名。只需替换Ajax调用就可以了。将按钮
更改为a
没有任何作用。我无法将form
更改为div
,因为这将阻止ASP.NET页面运行。好的,尝试将onClientClick=“return false;”添加到按钮属性,并将您的组件更改为onClientClick
,这在html5中不推荐使用,而且无论如何都不会起任何作用。如果我将按钮更改为asp:button
,它将在服务器端运行,并且我无法处理jQuery
中的单击事件。
<a id="btnSend" type="button" class="btn btn-success" href="#">Send</button>