【问题标题】:Why is my ajax code not actually sending?为什么我的 ajax 代码实际上没有发送?
【发布时间】:2017-04-29 04:27:41
【问题描述】:

我有我试图从文本框的值发布的 ajax 代码。我想将信息发送到我的 php 页面进行查询。

    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(注销我的会话)。

【问题讨论】:

  • & 是位运算符,你的意思是 && 吗?
  • @PhiterFernandes 是的,我的意思是 &&,我更改了我的 javascript,但它仍然给我所有需要输入的字段的消息。
  • @BenZaMusic 有什么更新吗??

标签: javascript php ajax


【解决方案1】:

使用&amp;&amp; 代替&amp; 将导致条件正常工作。

请参阅this answer 了解更多详情。

另外,您没有在 ajax 的错误函数中定义 response,它会抛出错误。

【讨论】:

  • 虽然 && vs & 是 OP 应该做的事情,但似乎“逻辑”实际上是正确的
  • 是的,逻辑是正确的。我调试了他的代码,他们没有工作的原因就很清楚了。
  • @PhiterFernandes 我现在正在使用这个:` if(member_username != "" && member_email != "" && member_cpukey != "")` 但它仍然在说消息“你必须填写所有的空白。”
【解决方案2】:

首先,你需要在 JavaScript 中放双“&”来表示“与”所以

if(member_username != "" &amp; member_email != "" &amp; 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";,希望对你有帮助。

【讨论】:

  • 在 mysql 中,您可以使用 SET 进行 INSERTS。这是一个mysql扩展。 Check this.
  • "INSERT INTO users VALUES('$username','$default_password','$email','$cpukey')" 这是如何指定要输入的列?
  • 它将按照数据库中字段的顺序异步插入
【解决方案3】:

我找到了它无法正常工作的原因。

我在我的 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">';
    }
}

}}

?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-28
    • 2017-07-30
    • 2019-10-15
    • 1970-01-01
    • 1970-01-01
    • 2019-03-04
    • 2020-09-27
    • 1970-01-01
    相关资源
    最近更新 更多