jQuery - AJAX POST 请求出现 500 内部服务器错误

jQuery - AJAX POST Request is giving a 500 Internal Server Error

所以像这样 post 的标题说,我正在通过 jQuery 的 AJAX 方法发送 POST 请求。然而,PHP 代码 运行s 确实 运行。 PHP 代码中的所有内容都可以正常工作。唯一的问题是它没有返回成功以 运行 success 函数。

Client-SideJS代码:

<script>

            function commandUpdate(command, action, element) {
              $.ajax({
                type: "POST",
                url: "update/commands.php",
                data: {id: window.location.href.split("?id=").slice(1).join("?id="), type: "NA", command: command, action: action, value: document.getElementById(command + "Text").value},
                success: function() {
                  document.getElementById(element).innerHTML = ""
                  location.reload()
                }
              })
            }

</script>

Server-Side PHP 代码:

<?php

  $connection = mysqli_connect("myIP", "user", "pass", "dbName");

  $loginID = $_POST["id"];
  $type = $_POST["type"];
  $value -> command = str_replace("\"", "\\"", $_POST["command"]);
  $value -> action = str_replace("\"", "\\"", $_POST["action"]);
  $value -> value = str_replace("\"", "\\"", $_POST["value"]);
  $value = json_encode($value);

  mysqli_query($connection, "INSERT IGNORE INTO requests (loginID, category, type, value) VALUES ('$loginID', 'commands', '$type', '$value')");

  mysqli_close($connection);

 ?>

除了控制台有 500 Internal Server Errorsuccess: function() {//code} 部分没有被执行之外,一切正常。我在这里遗漏了什么吗?

500 代码表示服务器端有问题。我遇到过类似的情况,与我自己不同的服务器出现了这个问题,尽管它本身提供了所有信息并且似乎运行良好。

我无法解决 500 错误,所以最终只是在调用中放置一个 always() 侦听器并调节 200 和 500 代码以及预期的数据结构。

因为您没有将调用存储在 var 中。你可以这样做:

function commandUpdate(command, action, element) {
          $.ajax({
            type: "POST",
            url: "update/commands.php",
            data: {id: window.location.href.split("?id=").slice(1).join("?id="), type: "NA", command: command, action: action, value: document.getElementById(command + "Text").value},
            success: function() {
              document.getElementById(element).innerHTML = ""
              location.reload()
            }
            statusCode: {
                200: function(){
                         document.getElementById(element).innerHTML = ""
                         location.reload()
                     }
                500: function(){
                         document.getElementById(element).innerHTML = ""
                         location.reload()
                     } 
            }
          })
        }

或链接它:

 $.ajax({
     /*options*/
  }).always(function(data){
       if(data.statusCode === 200 || data.stausCode === 500){
           /*Do things with data*/
       } 

  });

我遇到了同样的问题。对我来说,问题出在调用 ajax 的页面中(调用该页面中不可用的函数)。我的建议是转到您在 ajax 中调用的页面并查看该页面中的错误。一旦你解决了这个问题,ajax 调用应该可以正常进行。