2016-09-15 21 views
0

我在PHP文件中使用MySQL命令提交表單。我能夠插入數據沒有任何問題。如何檢查成功的數據在PHP文件中使用MySQL提交

但是,我同時也希望在相同頁面上向用戶顯示「謝謝你的留言」,以便他/她知道數據已被成功註冊。另一方面,如果有任何錯誤,我還可以顯示一條遺憾信息。

這就是我的問題。我在Javascript中寫了一些行以在同一頁面顯示消息。但是,我堅持要檢查什麼(以及如何)檢查成功和失敗。

我在下面附上我的代碼。

你能幫我解釋一下嗎?

感謝 AB

HTML表單標籤

<form id="info-form" method="POST" action="form-submit.php"> 

形式,submit.php

<?php 
    require("database-connect.php"); 

    $name = $_POST['name']; 
    $email = $_POST['email']; 
    $mobile = $_POST['mobile']; 

    $sql = "INSERT INTO tbl_details ". 
      "(name,email_id,mobile_number) ". 
      "VALUES ". 
      "('$name','$email','$mobile')"; 

    mysql_select_db('db_info');  
    $retval = mysql_query($sql, $conn); 

    if(! $retval) 
    { 
     die('Could not enter data: ' . mysql_error()); 
     return false; 
    } 

    echo "Entered data successfully\n"; 
    mysql_close($conn); 
?> 

提交-logic.js

$(function() 
{ 
    $('form').submit(function (e) 
    {     
     e.preventDefault(); 

     if(e.target === document.getElementById("info-form")) 
     { 
      $.ajax(
      { 
       type:this.method, 
       url:this.action, 
       data: $('#info-form').serialize(), 
       dataType: 'json',  
       success: function(response) 
       { 
        console.log(response);       
        if(response.result == 'true') 
        { 
         document.getElementById("thankyou_info").style.display = "inline"; 
         $('#please_wait_info').hide(); 
         document.getElementById("info-form").reset(); 
        }      
        else 
        {   
         document.getElementById("thankyou_info").style.display = "none"; 
         document.getElementById("sorry_info").style.display = "inline"; 
         $('#please_wait_info').hide(); 
        } 
       } 
      } 
     )}; 
    }); 
} 

回答

1

每文檔:http://api.jquery.com/jquery.ajax/

dataType (default: Intelligent Guess (xml, json, script, or html)) 
Type: String 
The type of data that you're expecting back from the server. 

你被明確將其設置爲json但隨後返回一個字符串。你應該返回json像你告訴ajax腳本期望。

<?php 
    require("database-connect.php"); 

    $name = mysql_real_escape_string($_POST['name']); 
    $email = mysql_real_escape_string($_POST['email']); 
    $mobile = mysql_real_escape_string($_POST['mobile']); 

    $sql = "INSERT INTO tbl_details ". 
      "(name,email_id,mobile_number) ". 
      "VALUES ". 
      "('$name','$email','$mobile')"; 

    mysql_select_db('db_info');  
    $retval = mysql_query($sql, $conn); 

    if(! $retval) 
    { 
     die(json_encode(array('result' => false, 'message' => 'Could not enter data: ' . mysql_error())); 
    } 

    echo json_encode(array('result' => true, 'message' => 'Entered data successfully')); 
    mysql_close($conn); 
?> 

我還添加代碼,以淨化你的字符串,雖然mysql_*已被廢棄,這將是更好的升級到mysqliPDO。如果沒有消毒,用戶可以破解你的數據庫..

然而,返回json適當將確保您在success: function(response)response是一個對象,並如預期response.result將被退回,並且可以使用response.message顯示在您想要的信息。

+0

謝謝@skrilled,工作。 – ABor

相關問題