就像这篇帖子的标题所说,我正在通过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}
部分未被执行的事实。我有什么东西在这里缺席吗?
答案 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调用应该可以正常进行。