jQuery - AJAX POST请求提供500内部服务器错误

时间:2018-02-03 19:16:07

标签: 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 Error并且success: function() {//code}部分未被执行的事实。我有什么东西在这里缺席吗?

2 个答案:

答案 0 :(得分:2)

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

  });

答案 1 :(得分:0)

我有同样的问题。对我来说,问题出在调用ajax的页面中(调用该页面中不可用的函数)。我的建议是转到您在ajax中调用的页面,然后查看该页面中的错误。解决此问题后,ajax调用应该可以正常进行。