2016-12-13 3 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

@PhiterFernandesはい私は&&を意味しましたが、私は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では、INSERTにSETを使用できます。これはmysqlの拡張機能です。 [これをチェック](http://stackoverflow.com/questions/861722/mysql-insert-into-table-values-vs-insert-into-table-set) – Phiter

+0

'' INSERT INTO users 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">'; 
    } 
} 

}} 

?> 
関連する問題