2016-12-13 64 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">'; 
    } 
} 

}} 

?> 
相关问题