Javascript 页面在ajax中被重新加载

Javascript 页面在ajax中被重新加载,javascript,php,jquery,mysql,ajax,Javascript,Php,Jquery,Mysql,Ajax,我正在尝试建立一个订阅表单。 问题是页面被重定向,数据没有输入数据库, 页面被重定向到 http://localhost/xampp/MY/SUB_FOLDERS/includes/parse.php?subscriber=sid%40patel&subscribe=subscribe HTML代码 <div id="subsc"> <form class="navbar-form navbar-right" action="i

我正在尝试建立一个订阅表单。 问题是页面被重定向,数据没有输入数据库, 页面被重定向到

http://localhost/xampp/MY/SUB_FOLDERS/includes/parse.php?subscriber=sid%40patel&subscribe=subscribe
HTML代码

        <div id="subsc">
            <form class="navbar-form navbar-right" action="includes/parse.php" mathod="post">
              <div class="form-group">
                <input type="email" placeholder="Email" class="form-control" name="subs" id="subs" required="required">
              </div>
              <input type="submit" class="btn btn-success" name="subscribe" id="subscribe" value="subscribe">
            </form>
          </div>

Ajax代码:

<script type="text/javascript">
$(document).ready(function(){

   $("#subscribe").click(function(){
    username=$("#subs").val();


         $.ajax({
           type: "POST",
           url: "includes/parse.php",
            //data:dataString,
            success: function(html){

        if(html=='true')
              {
                $("#subsc").fadeOut("normal");

                $("#subsc").html("Thank you for subscriping!");

              }
              else
              {
                    $("#subsc").html("Error in subscribing");
              }
            },

        });
         return false;
    });
});
</script>

$(文档).ready(函数(){
$(“#订阅”)。单击(函数(){
用户名=$(“#subs”).val();
$.ajax({
类型:“POST”,
url:“includes/parse.php”,
//数据:dataString,
成功:函数(html){
如果(html=='true')
{
美元(“#subsc”)。淡出(“正常”);
$(“#subsc”).html(“感谢您的订阅!”);
}
其他的
{
$(“#subsc”).html(“订阅错误”);
}
},
});
返回false;
});
});
用于将数据插入数据库的PHP脚本:

<?php include("connect.php");


if (@$_POST['subs']) {
 $subscriber = mysql_real_escape_string(strip_tags($_POST['subs']));

 $sendmessage = mysql_query("INSERT INTO subscriber VALUES('','$subscriber',now())");
 echo 'true';

}

?>


PS:订阅服务器id、电子邮件、日期时间中的行名称在表单上添加id:

<form id="myform" class="navbar-form navbar-right" action="includes/parse.php" method="post">

将您的Javascript更改为:

<script type="text/javascript">
$(document).ready(function(){

   $("#myform").submit(function(event){
    username=$("#subs").val();


         $.ajax({
           type: "POST",
           url: "includes/parse.php",
            //data:dataString,
            success: function(html){

        if(html=='true')
              {
                $("#subsc").fadeOut("normal");

                $("#subsc").html("Thank you for subscriping!");

              }
              else
              {
                    $("#subsc").html("Error in subscribing");
              }
            },

        });
        event.preventDefault();
    });
});
</script>

$(文档).ready(函数(){
$(“#myform”).submit(函数(事件){
用户名=$(“#subs”).val();
$.ajax({
类型:“POST”,
url:“includes/parse.php”,
//数据:dataString,
成功:函数(html){
如果(html=='true')
{
美元(“#subsc”)。淡出(“正常”);
$(“#subsc”).html(“感谢您的订阅!”);
}
其他的
{
$(“#subsc”).html(“订阅错误”);
}
},
});
event.preventDefault();
});
});

这将阻止表单提交数据的默认操作和明显的重定向。同样,通过处理表单的提交事件,您也可以处理表单可能通过其他方式提交的情况。

最简单的方法是将
#subscribe
元素的类型更改为
按钮,而不是
submit

    <div id="subsc">
        <form class="navbar-form navbar-right" id="SubsForm">
          <div class="form-group">
            <input type="email" placeholder="Email" class="form-control" name="subscriber" id="subs" required="required">
          </div>
          <input type="button" class="btn btn-success" id="subscribe" value="subscribe">
        </form>
      </div>

和JavaScript-

<script type="text/javascript">
$(document).ready(function(){

   $("#subscribe").click(function(){  
         $.ajax({
            type: "POST",
            url: "includes/parse.php",
            data:$('#SubsForm').serialize(),
            success: function(html){
              if (html=='true') {
                     $("#subsc").fadeOut("normal");
                     $("#subsc").html("Thank you for subscriping!");
              } else {
                     $("#subsc").html("Error in subscribing");
              }
          },
        });
    });
});
</script>

$(文档).ready(函数(){
$(“#订阅”)。单击(函数(){
$.ajax({
类型:“POST”,
url:“includes/parse.php”,
数据:$('#子表单')。序列化(),
成功:函数(html){
如果(html=='true'){
美元(“#subsc”)。淡出(“正常”);
$(“#subsc”).html(“感谢您的订阅!”);
}否则{
$(“#subsc”).html(“订阅错误”);
}
},
});
});
});
有关$().serialize的更多信息,请在此处找到-

.serialize()方法创建标准URL编码的文本字符串 符号它可以作用于已选择单个对象的jQuery对象 表单控件


我想这里有一种更简单的方法使用您现有的代码本身…而不是这些行: $(“#订阅”)。单击(函数(){ 用户名=$(“#subs”).val()

使用以下行: $(“#订阅”)。单击(功能(e){ e、 预防默认值(); e.停止传播(); 用户名=$(“#subs”).val()

这应该会停止表单发回,即使对于提交按钮也是如此。
希望这有帮助。

首先将订阅按钮绑定到单击事件,并删除属性action=“includes/parse.php”


旁白:您不应该将表单提交绑定到input:submit按钮的单击事件-提交表单的方法不止一种,例如在input:text字段中按enter键。请使用('submit',function(){…})上的
$('theformid')
它停止重定向,但只有当我将subscribe元素从submit更改为button时才停止。但这并不能解决问题,页面保持原样,什么也没有发生。PS:数据没有输入到dbSorry,但它没有。如果我给它一个id,它不应该是#myform?在我按照您所说的更改之后,问题仍然是一样的,页面被重定向SRY,但它不工作,页面没有被重定向,但注意,注意被添加到db,并且没有对html进行任何更改…PS:页面被刷新注意,您的QueryID中没有定义列您在启用JavaScript控制台的浏览器中检查了您的页面?我猜,在pa之前应该有一些美国错误ge被重定向。或者可能是您也应该将此函数绑定到表单的提交事件。是的,它没有被重定向,但是什么都没有发生。很好,是的。因为没有发送数据。更新了答案。请尝试。
<input type="button" class="btn btn-success" name="subscribe" id="subscribe" value="subscribe">

jQuery('#subscribe').click(function(){
    jQuery.ajax({
        url:'YOUR URL',
        type:'POST',
        data:'subsribe=true&email='+jQuery('#subs').val(),
        success:function(data){
            if(data == 'true')
            {
              //enter code here
              window.location.reload(true);
            }else{
              //enter code here
              alert(data);
            }
        }
    });
});
  /* AJAX check  */
    if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) &&strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
            if(isset($_POST)){
    $subscriber = mysql_real_escape_string(strip_tags($_POST['subscriber']));
    $query = "INSERT INTO subscribers('email','timestamp') VALUES('$subscriber',NOW())";
     $sendmessage = mysql_query($query) or die(mysql_error());
     echo 'true';
            }
    }