Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ajax post方法导致页面重新加载而不回发_Javascript_Jquery_Asp.net_Ajax - Fatal编程技术网

Javascript ajax post方法导致页面重新加载而不回发

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

我对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="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>