当mysqli_query具有不正确的值时(使用AJAX),没有抛出可见错误

时间:2017-03-17 16:01:35

标签: javascript php ajax mysqli

我有1个文件,它们使用PhP,JavaScript,HTML,AJAX,CSS,MySQLi和SQL,它们基本上是一个包含某些字段的页面,然后它使用AJAX将信息发送到数据库,无需刷新页面即可进行连接。

一切正常,但我无法通过<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="ultras" id="ultras1"> <div class="ultra" id="ultra1">&nbsp;</div> <div class="ultra" id="ultra2">&nbsp;</div> <div class="clearFloat"></div> </div> <div class="ultras" id="ultras2"> <div class="ultra" id="ultra3">&nbsp;</div> <div class="ultra" id="ultra4">&nbsp;</div> <div class="clearFloat"></div> </div>显示错误。我通过更改or die()中的一个值来测试它,这使得它不向数据库发送信息,但是用户没有ideia,因为没有错误消息。如何让它抛出错误?

我没有想到我做错了什么,但如果我不得不打赌那将是AJAX没有刷新页面或其他东西。我已经看到了一些问题,我确信他们会解释这个问题,但jQuery总是让我困惑。

这是我的代码,经过一些修改以减少不重要的东西:

my_table(...)

编辑以更好地解释这种情况:

如果我使用这个简单的代码,它可以正常工作:

<?php
  if(isset($_POST["name"]) && !empty($_POST["name"])) {
    $link = mysqli_connect("127.0.0.1", "my_user", "my_password", "my_db");
    mysqli_set_charset($link, "utf8");
    // code
    mysqli_query($link, "INSERT INTO my_table(...)values(...)") or die(mysqli_error($link));
    mysqli_close($link);
    exit;
  }
?>
<html>
  <head>
    <meta charset="UTF-8">
    <script>
      function AJAX() {
        // code
        var xhttp = new XMLHttpRequest();
        xhttp.open('POST', 'my_file.php', true);
        xhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
        xhttp.send(...);
      }
    </script>
  </head>
  </body>
    <!-- code -->
    <button onclick="AJAX()">Send</button>
  </body>
</html>

但是,例如,当我将<?php $link = mysqli_connect("127.0.0.1", "my_user", "my_password", "my_db"); /* check connection */ if (mysqli_connect_errno()) { printf("Connect failed: %s\n", mysqli_connect_error()); exit(); } mysqli_query($link,"INSERT INTO my_table(Name) VALUES ('Bob')") or die(mysqli_error($link)); mysqli_close($link); ?> 更改为不存在的错误名称时,它会在文档my_table中写入。虽然在我的文件中它根本不会写/显示/什么都没有,但它会让用户认为它不起作用。

1 个答案:

答案 0 :(得分:0)

这应该警告错误:

        var xhttp = new XMLHttpRequest();
        xhttp.addEventListener("error", function(event) {
            alert('an error occured');
        });
        xhttp.open('POST', 'my_file.php', true);
        xhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
        xhttp.send(...);

您可以在此处找到有关eventListener的所有信息:https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest

请记住,此错误事件仅在网络故障时触发。如果您需要处理不同的http代码,可以在此处找到一个很好的示例:XMLHttpRequest (Ajax) Error