表单重新加载页面而不发送提交数据

时间:2016-10-04 15:17:53

标签: javascript php jquery html forms

这是我的代码。

在我的.js文件中:

function Sendit()
{
    bValidate = validateField();
    if(bValidate)
    {
        var title = $("#title").val();

        theUrl = 'index.php';

        params = '';
        params += 'action=Send';   
        params += '&title='+title;        
        $.ajax ({
            url: theUrl,
            data: params,
            async:true,
            success: function (data, textStatus)
            {
                //do smth
                alert('went well'); 

            }
            ,
          error: function(jqXHR, textStatus, errorThrown) 
          {
            alert(errorThrown);
          }
        }); 
    }
}

function validateField()
{
        var title = document.getElementById('title').value;         
        if(!title.match(/\S/)) 
        {
            //do some alerting 
            return false;
        }
        else
        {
         return true;
        }
}

在我的index.php文件中:

<form action="" method="post" name="myform" id="myform"" > 
Title:  <input class="" type="text" name="title" value="" id="title"/> <br>
<input type="submit" value="Submit"  onClick="javascript:Sendit();return false; "> 
</form>

<?php
if ($_REQUEST["action"]=='Send')
{
  $title = $_REQUEST["title"];  


        $sql = "INSERT INTO ...
       $retval = $mysqli->query($sql, $conn);

       if(! $retval ) {
          echo('Could not enter data insert: ' . mysql_error());
       }
       else
       {
       //inform that everything went well 

       }
       ?>

单击sunmit按钮时,这不会发送任何内容。实际上,您可以单击按钮直到当天结束时没有任何反应(甚至调试器中的消息都没有)

如果我从按钮中的return false;删除onClick,我会点击该按钮,即使不填写必须填写的标题输入,页面也会重新加载。

Ajax的成功不会提醒某事物,在这两种情况下,我的数据库中都没有插入任何内容。

插入查询是正确的,我已经检查过了。

有关如何发送数据和验证的任何想法?

谢谢

2 个答案:

答案 0 :(得分:0)

您的validateField()函数永远不会返回true,因此if(bValidate)永远不会运行。 Javascript函数返回undefined,除非你明确地返回一些东西,试试这个:

function validateField()
{
    var title = document.getElementById('title').value;         
    if(!title.match(/\S/)) 
    {
        //do some alerting 
        return false;
    } esle {
        return true;
    }
}

答案 1 :(得分:0)

使用以下代码发送请求

function Sendit()
{
bValidate = validateField();
if(bValidate)
{
    var title = $("#title").val();

    theUrl = 'index.php';

    params = {};
    params["action"] = 'Send';   
    params["title"] = title;        
    $.ajax ({
        url: theUrl,
        data: params,
        async:true,
        success: function (data, textStatus)
        {
            //do smth
            alert('went well'); 

        }
        ,
      error: function(jqXHR, textStatus, errorThrown) 
      {
        alert(errorThrown);
      }
    }); 
  }
}