【问题标题】:EOF / Failed to load error when calling PHP file with AJAXEOF / 使用 AJAX 调用 PHP 文件时无法加载错误
【发布时间】:2014-11-27 00:57:04
【问题描述】:

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

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

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 文件,每当我单击表单上的提交(在不同的 html 文件中)时,它都会使用 ajax 调用 php 文件

$(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/submitName.php

加载资源失败:来自服务器的文件意外结束(19:41:35:723 | 错误,网络) 在 public_html/submitName.php

加载资源失败:来自服务器的文件意外结束(19:41:36:062 | 错误,网络) 在 public_html/submitName.php

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

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

【问题讨论】:

  • 请在此处发布您的代码,而不是作为 pastebin 链接。
  • 我无法在此处发布我的代码,它全是乱码。
  • 使用编辑器中的代码标记工具:{}
  • 我在用,还是乱码,我修好了,我的错!
  • 您是否遇到任何服务器端错误?

标签: javascript php jquery ajax eof


【解决方案1】:

从您的submitName.php 中删除它,除非其中确实包含 HTML。

<!DOCTYPE html>

如果其中有 HTML,请改为这样做。

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

另外,如果submitName.php 不包含HTML,请确保底部?&gt; 后面没有空行。

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

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 标签之前/之后有空格。您可能还想尝试重新加载 netbeans。
  • 我从我的 WAMP 服务器日志文件中得到这个:27-Nov-2014 04:12:21 Europe/Paris] PHP 致命错误:在非对象上调用成员函数 fetch_assoc() C:\Program Files (x86)\wamp\www\WSFinal\public_html\submitName.php 第 27 行 [27-Nov-2014 04:12:21 Europe/Paris] PHP Stack trace: [27-Nov-2014 04: 12:21 欧洲/巴黎] PHP 1. {main}() C:\Program Files (x86)\wamp\www\WSFinal\public_html\submitName.php:0
  • 所以$getname = "SELECT name FROM summoners"; 没有返回任何东西。
  • 我猜是这样......但查询返回一个 mysqli_result 对象。但是,对象中的每个字段都是 NULL。我很困惑。
【解决方案2】:

在 php 文件的末尾删除?&gt;,而不是使用var dataString = 'name=' + name;,而是使用它:

var data = { "name" : name};

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

这就是我所能提供的帮助,无需任何日志文件,只需快速浏览一下您的代码。

【讨论】:

  • 感谢您的回复!我按照建议进行了更改,但仍然出现错误。这些是我从输出日志中得到的错误:加载资源失败:软件导致连接中止:recv failed (20:55:45:109 | error, network) at public_html/submitName.php 加载资源失败:意外结束来自服务器的文件(20:55:52:199 | 错误,网络)位于 public_html/submitName.php
  • 好吧,酷。你能继续更新你的代码吗?谢谢!
  • 我其实是用ajax执行php文件,让浏览器不切换页面。我可以加载页面,但是每当我提交表单时,我都会收到意外的 eof 错误,或者我收到 Software cause connection abort, recv failed 错误。
  • 好的,这很酷。但是您仍然应该能够自行加载页面以查看输出。所以自己加载"submitName.php",然后使用die();方法,单步调试文件,直到找到错误。此外,如果您没有看到错误,请将其添加到 PHP 代码的开头ini_set('display_errors',1); ini_set('display_startup_errors',1); error_reporting(-1);
  • 好的,我运行了 PHP 文件并对其进行了一些更改(更新版本在帖子中进行了编辑)。它本身运行良好,它会更新表并且如果它已经存在则不会添加名称。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-16
  • 2023-03-18
  • 2020-08-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多