$ .ajax()发布值未达到php

时间:2018-02-10 22:35:27

标签: php jquery ajax

我创建了一个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
?>

2 个答案:

答案 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>