2016-12-13 74 views
2

我有我的ajax代碼,我試圖從文本框的值發佈。我想將信息發送到我的php頁面以查詢。爲什麼我的ajax代碼實際上沒有發送?

function addUser() { 
 
     myOutput = document.getElementById('add_user_result'); 
 
     var member_username = $('#username_name').val(); 
 
     var member_email = $('#email_name').val(); 
 
     var member_cpukey = $('#cpukey_name').val(); 
 
    
 
     if(member_username != "" & member_email != "" & member_cpukey != "") { 
 
      $.ajax({ 
 
       type: "POST", 
 
       url: 'includes/ajax_data_add_member.php', 
 
       data: { username: member_username, email: member_email, cpukey: member_cpukey }, 
 
       success: function(response) { 
 
        $("#add_user_result").show(); 
 
        $('#add_user_result').fadeOut(3000).html(response); 
 
        header('Location: admin_members.php'); 
 
       }, 
 
       error: function() { 
 
        $("#add_user_result").show(); 
 
        $('#add_user_result').fadeOut(3000).html(response); 
 
        header('Location: admin_members.php'); 
 
       } 
 
      }); 
 
     } else { 
 
      $("#add_user_result").show(); 
 
      $('#add_user_result').fadeOut(3000); 
 
      myOutput.innerHTML = "<font style='color: red;'>You must fill in all the blanks.</font>"; 
 
     } 
 
     return false; 
 
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="row"> 
 
    <div class="col-lg-12"> 
 
    <div class="p-20"> 
 
     <div class="card-box" style="background: #eeeeee; padding: 10px; border: 1px solid #E3E3E3; border-radius: 0px;"> 
 
     <div class="form-inline"> 
 
      <div class="form-group" style="padding-left: 4%;"> 
 
      <div class="form-group m-r-12"> 
 
       <label class="col-sm-12 control-label">Add User</label> 
 
      </div> 
 
      <input type="text" name="username_name" id="username_name" placeholder="Username" class="form-control" required/> 
 
      <input type="text" name="email_name" id="email_name" placeholder="Email" class="form-control" required/> 
 
      <input type="text" name="cpukey_name" id="cpukey_name" placeholder="CPUKey" class="form-control" required/> 
 
      <button onclick="addUser()" class="btn btn-success"><i class="fa fa-user-plus"></i> Add User</button> 
 
      <select class="form-control" id="selection_value" name="selection_value"> 
 
       <option value="account_credits">Account Credits</option> 
 
       <option value="free_gifted_credits">Free Gifted Credits</option> 
 
       <option value="time">Member Server Days</option> 
 
      </select> 
 
      <input type="text" name="add_to_all_value" id="add_to_all_value" onkeypress="return isNumberKey(event)" placeholder="Value to add to current" class="form-control" required/> 
 
      <button id="button1" onclick="add_to_all()" class="btn btn-primary"><i class="fa fa-user-plus"></i> Add To All Users</button> 
 
      </div> 
 
     </div> 
 
     </div> 
 
     <div id="add_user_result" class="add_user_result"></div> 
 
    </div> 
 
    </div> 
 
</div>

我的PHP代碼

if(!empty($_POST) && isset($_POST)) { 
$username   = mysqli_real_escape_string($con, $_POST['username']); 
$email    = mysqli_real_escape_string($con, $_POST['email']); 
$cpukey    = mysqli_real_escape_string($con, $_POST['cpukey']); 
$default_password = grab_default_user_password(); 

$insert_query = mysqli_query($con, "INSERT INTO users SET username = '$username', password = '$default_password', email = '$email', cpukey='$cpukey'"); 
if($insert_query) { 
    echo '<font style="color: green;">Successfully Inserted user <b>'.$username.'</b></font>'; 
    echo '<META HTTP-EQUIV="Refresh" CONTENT="3; URL=admin_members.php">'; 
} 
else { 
    echo '<font style="color: red;">Failed to insert user <b>'.$username.'</b></font>'; 
    echo '<META HTTP-EQUIV="Refresh" CONTENT="3; URL=admin_members.php">'; 
} 
} 

有誰知道爲什麼當我點擊並輸入每一個文本框的的,它說:「你必須填寫所有的空白「,儘管它們都不等於''(空白)。然後,當我刷新時,它會將我發回index.php(簽名我的會話)。

+0

&是一個按位運算符,你的意思是&&? –

+0

@PititerFernandes是的我的意思是&&,我改變了我的javascript,但它仍然給我所有需要輸入的字段的消息。 –

+0

@BenZaMusic對我們有什麼更新? – PacMan

回答

1

使用&&而不是&將導致條件工作正常。

有關更多詳情,請參閱this answer

另外,你沒有在你的ajax的錯誤函數中定義response,它會拋出錯誤。

+0

而&& vs&是OP應該做的事情,看起來「邏輯」實際上是正確的 –

+0

是的,邏輯是正確的。我調試了他的代碼,他們沒有工作的原因變得清晰。 – Phiter

+0

@PhiterFernandes我現在使用這個:' if(member_username!=「」&& member_email!=「」&& member_cpukey!=「」)'但它仍然在說消息「您必須填寫所有空格。」 –

0

首先,你需要把雙「&」表示「和」在JavaScript中這樣

if(member_username != "" & member_email != "" & member_cpukey != "") {

現在讓我們假設該請求得到了很好發送到服務器端, ,你坐在那裏是行不通的,因爲你有一個大的語法錯誤的要求,你不能在SQL INSERT INTO users SET usernam 說,正確的形式是將其寫成這樣:

"INSERT INTO users VALUES('$username','$default_password','$email','$cpukey')" 

另一句話是,"header('Location: admin_members.php');"是一個PHP代碼,所以它不會在你的JS代碼上解釋,所以我建議你使用window.location.href = "admin_members.php";我希望它有幫助。

+0

在mysql中,您可以使用SET for INSERTS。這是一個MySQL擴展。 [檢查此](http://stackoverflow.com/questions/861722/mysql-insert-into-table-values-vs-insert-into-table-set)。 – Phiter

+0

'「INSERT INTO用戶VALUES('$ username','$ default_password','$ email','$ cpukey')」'這是如何指定列進入它? –

+0

它將異步執行插入到數據庫中的字段順序 – PacMan

0

我發現它無法正常工作的原因。

我在我的php文件中調用我的數據庫文件太晚了。 我的新工作代碼是:

<?php 
session_start(); 
include_once('../configuration/db.php'); 

function user_session_timeout_manual() { 
global $con; 
    $grab_user_timeout_sql = mysqli_query($con, "SELECT user_session_timeout FROM sitesettings"); 
    $row = mysqli_fetch_array($grab_user_timeout_sql); 
    return $row['user_session_timeout']; 
} 

function grab_default_user_password() { 
global $con; 
    $grab_default_user_password_sql = mysqli_query($con, "SELECT default_user_insert_password FROM sitesettings"); 
    $row = mysqli_fetch_array($grab_default_user_password_sql); 
    return $row['default_user_insert_password']; 
} 

if(!isset($_SESSION['username']) || time() - $_SESSION['login_time'] > user_session_timeout_manual()) { 
    unset($_SESSION['login']); 
    unset($_SESSION['username']); 
    session_destroy(); 
    header("Location: index.php"); 
} 

else { 
    $_SESSION['login_time'] = time(); 

if(!isset($_SESSION['login']) || $_SESSION['login'] !== true) { 
    unset($_SESSION['login']); 
    unset($_SESSION['username']); 
    session_destroy(); 
    header('Location: index.php'); 
} 
else { 

if(!empty($_POST) && isset($_POST)) { 
    $username_grab   = mysqli_real_escape_string($con, $_POST['username']); 
    $email_grab    = mysqli_real_escape_string($con, $_POST['email']); 
    $cpukey_grab   = mysqli_real_escape_string($con, $_POST['cpukey']); 
    $default_password_grab = grab_default_user_password(); 

    $insert_query = mysqli_query($con, "INSERT INTO users SET username = '$username_grab', password = '$default_password_grab', email = '$email_grab', cpukey='$cpukey_grab'"); 
    if($insert_query) { 
     echo '<font style="color: green;">Successfully Inserted user <b>'.$username_grab.'</b></font>'; 
     echo '<META HTTP-EQUIV="Refresh" CONTENT="3; URL=admin_members.php">'; 
    } 
    else { 
     echo '<font style="color: red;">Failed to insert user <b>'.$username_grab.'</b></font>'; 
     echo '<META HTTP-EQUIV="Refresh" CONTENT="3; URL=admin_members.php">'; 
    } 
} 

}} 

?>