簡體   English   中英

表單重新加載頁面而不發送提交數據

[英]Form reloading page without sending the data on submit

這是我的代碼。

在我的.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的成功並沒有提醒一件事情,在這兩種情況下,我的數據庫中都沒有插入任何內容。

插入查詢是正確的,我已經檢查過了。

有關如何發送數據和驗證的任何想法?

謝謝

您的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;
    }
}

使用以下代碼發送req。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM