【问题标题】:jQuery.ajax POST 500 Internal Server Error on PHP scriptPHP脚本上的jQuery.ajax POST 500内部服务器错误
【发布时间】:2012-06-15 02:16:36
【问题描述】:

我在向登录脚本发送 ajax 请求的 js 函数上收到此错误。这是代码:

function validateLogin(){
  $(document).ready(function(){
    $("#loginform").submit(function(){
      $.ajax({
        type: "POST",
        url: "./php/autologin.php",
        data: {
          'login': $("#login").val(), 
          'password': $("#password").val()
        },
        dataType: "json",
        success:function(data){
          if(data.status === "success"){
            alert(data.message);
            window.location = "./userarea.html?user=".concat(data.user);
          } else if (data.status === "error"){
            alert(data.message);
          }
        },
        error:function(thrownError){
          console.log(thrownError);
        }
      }); 
      return false;
    });

  });
}

我在上述代码的 url 上收到 POST 500 Internal Server Error 这是 chrome 控制台中打印的内容:

POST http://localhost/capstone/atomos-4.0/php/autologin.php 500 (Internal Server Error) jquery-1.7.2.min.js:4
f.support.ajax.f.ajaxTransport.send jquery-1.7.2.min.js:4
f.extend.ajax jquery-1.7.2.min.js:4
(anonymous function) validateLogin.js:4
f.event.dispatch jquery-1.7.2.min.js:3
f.event.add.h.handle.i jquery-1.7.2.min.js:3

我真的不明白帖子错误试图告诉我什么,任何人都可以在正确的方向上帮助我解决这个问题。如果您需要更多信息,请告诉我。谢谢

编辑:这是有问题的 php 函数: autologin.php

include './login.php';

$login = $_POST['login'];
$password = $_POST['password'];
$loginattempt = json_decode(login($login, $password));

if ($loginattempt->{'status'} === "success") {
  return json_encode(array('status' => "success", 'message' => "Login Successful!"));
  die();
} else { 
  return json_encode(array('status' => "error", 'error' => "loginfailure", 'message' => ($loginattempt -> {"message"})));
  die();
}
?>

login.php:

<?php

include './connnect_to_mysql.php';

function login($log, $pass) {
  $connection = json_decode(connect_to_mysql());
  if ($connection->{'status'} === "success") {
    $sqlquery = mysql_query("SELECT * FROM userdata WHERE login='$log' AND password='$pass'") or die(mysql_error());
    if (mysql_num_rows($sqlquery) == 1) {
      setcookie("user", $log, 60 * 60 * 24);
      return json_encode(array('status' => "success", 'message' => "Login Successful.", 'user' => $log));
      die();
    } else {
      return json_encode(array('status' => "error", 'error' => "loginfailure", 'message' => mysql_error()));
      die();
    }
  } else {
    return json_encode(array('status' => "error", 'error' => "connectionerror", 'message' => $connection -> {'message'}));
    die();
  }
}

?>

编辑 2: connect_to_mysql.php:

<?php

function connect_to_mysql() {
  $con = mysql_connect('localhost', 'user', 'pass') or die(mysql_error());
  if ($con) {
    $db = mysqli_select_db($con, 'db')or die(mysql_error());
    if ($db) {
      return json_encode(array('status' => "success", 'message' => "connected"));
      die();
    }
  } else {
    return json_encode(array('status' => "error", 'message' => mysql_error()));
    die();
  }
}

?>

【问题讨论】:

  • 服务器错误意味着服务器上有东西死了,没有发回任何东西。我建议删除巨大的响应文本粘贴,它对诊断问题没有用,并且可能会阻止人们提出您的问题。
  • Status 500 表示服务器错误,所以很可能在php脚本中而不是在您的ajax调用中,但是ajax调用可能与它有关,您可以发布php源代码吗?
  • 而且你需要发布你的 PHP 代码,因为服务器上发生了错误。

标签: php jquery ajax internal-server-error


【解决方案1】:

include './connnect_to_mysql.php'; 修复为include './connect_to_mysql.php'; :)

【讨论】:

  • 对不起老兄,你能 var_dump($_POST) 吗?我想我看到了。
  • 这是我从 var_dump($_POST) 中得到的:array(2) { ["login"]=> string(17) "this is my email" ["password"]=> string(13) "这是我的密码" }
  • 我更改了登录名和密码值,但我知道它们输入正确
  • 这也是来自 autologin.php 的 var_dump,我认为这就是你想要的地方
  • 好的,看起来没问题,在$con = mysql_connect('localhost', 'user', 'pass') or die(mysql_error()); 之后你能做一个print "mysql not the 500"; exit; 并让我知道它是否打印了行吗?我会说 var_dump 它,但我不知道那是不是太多东西
猜你喜欢
  • 2018-01-15
  • 1970-01-01
  • 2013-06-07
  • 1970-01-01
  • 2018-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多