EOF / 使用 AJAX 调用 PHP 文件时无法加载错误


EOF / Failed to load error when calling PHP file with AJAX

显然我的 POST 请求被取消了?http://puu.sh/d73LC/c6062c8c07.png

而且,当我使用 select 查询查询数据库时,mysqli_result对象具有所有 null 值:

object(mysqli_result)[2]
  public 'current_field' => null
  public 'field_count' => null
  public 'lengths' => null
  public 'num_rows' => null
  public 'type' => null

这是我的PHP文件:

<?php
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "uoitlol";
$name = "test1"; //this should be $_POST['name']; test1 is just to test if it works.
$err = false;
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_errno > 0) {
    echo 'connerr';
    die();
}
$sql = "INSERT INTO summoners (name) VALUES (?)";
$getname = "SELECT name FROM summoners";
$result = $conn->query($getname);
while ($row = $result->fetch_assoc()) {
    echo 'name : ' . $row['name'];
    if ($row['name'] === $name) {
        echo 'error, name exists';
        $err = true;
    }
}
$stmt = $conn->prepare($sql);
$stmt->bind_param('s', $name);
if ($err === false) {
    if (!$stmt->execute()) {
        echo 'sqlerr';
    } else {
        echo 'success';
    }
}
$stmt->close();
mysqli_close($conn);

这是我的 JavaScript 文件,每当我在表单上单击提交时,它都会使用 Ajax 调用 PHP 文件(在不同的 HTML 文件中)

$(document).ready(function () {
    $("#modalClose").click(function () {
        document.getElementById("signupInfo").className = "";
        document.getElementById("signupInfo").innerHTML = "";
    });
    $("#formSubmit").click(function () {
        var name = $("#name").val();
// Returns successful data submission message when the entered information is stored in database.
        var dataString = {'name' :name};
        if (name === '')
        {
            document.getElementById("signupInfo").className = "alert alert-danger";
            document.getElementById("signupInfo").innerHTML = "<b>Please enter a summoner name!</b>";
        }
        else
        {
// AJAX Code To Submit Form.
            $.ajax({
                type: "POST",
                url: "submitName.php",
                data: dataString,
                cache: false,
                success: function (msg) {
                    if (msg === 'error'){
                        document.getElementById("signupInfo").className = "alert alert-danger";
                        document.getElementById("signupInfo").innerHTML = "<b>That summoner name is already in the database!</b>";
                    } else if (msg === 'sqlerror'){
                        document.getElementById("signupInfo").className = "alert alert-danger";
                        document.getElementById("signupInfo").innerHTML = "<b>SQL error, contact the administrator.</b>";
                    } else if (msg === 'success'){
                        document.getElementById("signupInfo").className = "alert alert-success";
                        document.getElementById("signupInfo").innerHTML = "<b>Summoner successfully added!</b>";
                    }
                }
            });
        }
        return false;
    });
});

每次单击提交表单的按钮时,我都会收到以下错误:

无法加载资源:服务器中的文件意外结束(19:41:35:538 | 错误,网络) 在public_html/提交名称.php

无法加载资源:服务器中的文件意外结束(19:41:35:723 | 错误,网络) 在public_html/提交名称.php

无法加载资源:服务器中的文件意外结束(19:41:36:062 | 错误,网络) 在public_html/提交名称.php

我正在使用 Netbeans IDE,如果这很重要的话。

puu.sh/d6YXP/05b5f3dc06.png - 包含输出日志错误的 IDE 屏幕截图。

从你的submitName.php中删除它,除非里面真的有 HTML。

<!DOCTYPE html>

如果其中有 HTML,请改为执行此操作。

<?php
//your PHP code//
?>
<!DOCTYPE html>
//your HTML here//
</html>

此外,如果submitName.php不包含 HTML,请确保底部的 ?> 后没有空行。

编辑:关于您的查询失败,请尝试此代码。

if (!empty($name) { //verify the form value was received before running query//
    $getname = "SELECT name FROM summoners WHERE name = $name";
    $result = $conn->query($getname);
    $count = $getname->num_rows; //verify a record was selected//
    if ($count != 0) {
        while ($row = $result->fetch_assoc()) {
            echo 'name : ' . $row['name'];
            if ($row['name'] === $name) {
                echo 'error, name exists';
                $err = true;
            }
        }
    } else {
        echo "no record found for name";
        exit;
    }
}

?>放在 php 文件的末尾,而不是使用 var dataString = 'name=' + name; 改用这个:

var data = { "name" : name};

jQuery会自动为你做一些肮脏的事情,这样你就不必特殊的文本转义它和其他东西。

这是我在没有任何日志文件的情况下所能提供帮助的,只需快速浏览您的代码。