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

标签 javascript php jquery ajax internal-server-error

就像这篇文章的标题所说,我通过 jQuery 的 AJAX 方法发送 POST 请求。然而,它运行的 PHP 代码确实运行了。 PHP 代码中的所有内容都按其应有的方式工作。唯一的问题是它没有返回成功来运行 success 函数。

客户端 JS 代码:

<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>

服务器端 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} 部分。 t 正在被执行。我在这里缺少什么吗?

最佳答案

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*/
       } 

  });

关于javascript - jQuery - AJAX POST 请求给出 500 内部服务器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48601063/

相关文章:

PHP 零浮点返回真

php - Magento - customer_save_after 总是解雇两次

php - 从 mysql 表中的每一行中删除重复单词的最佳方法

javascript - 第一个和最后一个元素的 jquery slider 动画

javascript - 保持动态展开按钮的状态

javascript - 修复了滚动上的导航栏

javascript - 在 webpack.config.js 中使用 Promise 的结果

javascript - 用Cytoscape扩展节点

javascript - HighCharts - 单击图例后如何重新定位标签

javascript - JQuery - 从 'this' 中删除特定元素标签(但不是 HTML)?