我创建了一个Ajax发布请求,由于某种原因,PHP脚本没有正确接收发布数据。我收到500内部服务器错误,然后是“XHR加载失败:POST”。
以下是我的javascript的一部分:
$.ajax({
type: "POST",
url: 'newmessage.php',
// Generic form data
data: {name: $("#name").val(), message: $("#message").val()},
success: function(result){
showMessages();
}
});
这是PHP:
if(isset($_POST['name']) && isset($_POST['message']))
{
// Do something
}
仔细查看我的代码后,我相信我在ajax请求中做了一些不正确的事情。在我的PHP文件中,如果我创建一个javascript警报来输出$ _POST变量,则不会打印任何内容。
<?php
$x = $_POST['name'];
?>
<script language="javascript">
alert ('<?php echo $x; ?>');
</script>
<?php
?>
答案 0 :(得分:0)
嗯,很难说你的服务器是如何配置的,但是,乍一看,看起来你的网址可能就是问题所在。
$.ajax({
type: 'POST',
url: '/newmessage.php', // <--- notice the leading slash
data: {
name: $('#name').val(),
message: $('#message').val(),
},
success: function(reply) {
//do stuff...
}
});
点击此处的文档:http://api.jquery.com/jquery.ajax/
此外,如果您使用的是Chrome,则可以使用开发者工具查看引擎盖下的确切内容。特别是网络选项卡。 https://developers.google.com/web/tools/chrome-devtools/
最后,如果您只想对服务器进行故障排除,可以将jQuery从图片中删除并使用Postman等应用程序。 https://www.getpostman.com/apps
答案 1 :(得分:0)
XHL代表XMLHttpRequest
听起来没有服务对象(网址问题)。
或
servlet(php)刚刚中止了你的请求(缺少csrf令牌)
解决方案1, 检查网址
正常通话
URL:"/http://address/newmessage.php" //keep it in your mind please
休息电话
<form>
//...
<input type="hidden" id="token" value="<?php echo $token; ?>" />
//...
</form>
function sendDatas(){
var token =$("#token).val();
$.ajaxPrefilter(function (options, originalOptions, jqXHR) {
jqXHR.setRequestHeader('X-CSRF-Token', token);
});
$.ajax({
type: 'POST',
url: '/newmessage.php', // <--- notice the leading slash
data: {
name: $('#name').val(),
message: $('#message').val(),
},
success: function(reply) {
//do stuff...
}
});
}
解决方案2,
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<input type="text" id = "inp">
</body>
<script>
var input = document.getElementById('inp');
input.addEventListener('keyup', (e) => {
if (input.value[input.value.length - 1] === input.value[input.value.length - 2]){
input.value = input.value.slice(0,-1);
}
});
</script>
</html>