页面在ajax中重新加载

时间:2013-10-20 13:44:02

标签: javascript php jquery mysql ajax

我正在尝试构建订阅表单。 问题是页面被重定向,并且数据没有输入db, 页面被重定向到

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

HTML CODE

        <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>

用于将数据插入数据库的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,电子邮件,日期时间

中的行名称

4 个答案:

答案 0 :(得分:0)

在表单上添加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>

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

答案 1 :(得分:0)

最简单的方法是将#subscribe元素的类型更改为button而不是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>

更多关于$()。序列化可以在这里找到 - http://api.jquery.com/serialize/

  

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

答案 2 :(得分:0)

我想这里有一个更简单的方法,使用你现有的代码本身...而不是这些行: $( “#订阅”)。点击(函数(){     用户名= $( “#潜艇”)VAL();

使用以下行: $( “#订阅”)。点击(函数(E){     e.preventDefault(); 。 e.stopPropagation();     用户名= $( “#潜艇”)VAL();

即使是提交按钮,也应该停止表单回发。 希望这可以帮助。

答案 3 :(得分:0)

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

<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';
            }
    }