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 Error
和 success: 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 调用应该可以正常进行。
所以像这样 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 Error
和 success: 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 调用应该可以正常进行。