繁体   English   中英

在PHP中获取Ajax发布数据

[英]Getting an ajax post data in php

$.ajax({
    url: '/gateway/',
    type: 'POST',
    data: {test : 'test'},
    dataType: 'json',
}).done(function(){
    console.log('done');
});

上面是我的AJAX帖子,下面是我的PHP:

var_dump($_POST['test']);
die();

问题是,这无法正常工作(我得到NULL值)-为什么?

我知道我的电话即将转到PHP代码,因为我可以转储任何旧字符串:

var_dump('hello');
die();

我要去哪里错了?

只需删除此dataType: 'json' 您的$_POST['test']是一个字符串值,而不是JSON字符串。

您要测试的POST值不是JSON,而是一个字符串。

去除

dataType: 'json',

它应该工作。

当您在AJAX请求中设置dataType: "json" ,这意味着应将预期的响应解析为json(而不是其他人所说的传出POST)。

这是一个精简的复制和粘贴示例,供您继续使用。 希望能帮助到你

<?php 
//is it POST
if($_SERVER['REQUEST_METHOD'] == 'POST'){

    // set var
    $test = isset($_POST['test']) ? $_POST['test'] : null;

    //do some logic - skip that bit ;p

    //was the request from AJAX, ok send back json
    if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {

        //always a good idea
        header('Content-Type: application/json');

        //json encode, notice the ABC, then look at the jQuery below
        die(json_encode(
            array('ABC' => 'From Response: '.$test)
        ));
    }
}
?>

<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script>
jQuery(document).ready(function(){
    var ajax = $.ajax({
        url: "./",
        type: "POST",
        data: {test : 'test'},
        dataType: "json"
    });
    ajax.done(function(data) {
        $("#result").html(data.ABC); /* << See data is an object */
    });
    ajax.fail(function(xhr, status, error) {
        $("#result").html(xhr.responseText);
    });
});
</script>

<span id="result"></span>

我不确定这是否是问题,但是.done已过时。 此外,正如其他人提到的那样,您正在从服务器请求json而不接收json。

您的代码应如下所示

$.ajax({
    url: '/gateway/',
    type: 'POST',
    data: {test : 'test'},
    success: function () {console.log('done');}
});

我想向您推荐我的代码。 并请检查以下几点。

  1. 检查您提供的网址的位置。 如果它在父目录中,则可以使用../访问它,最重要的是提供文件扩展名。 像“ gateway.php”
  2. 并编写成功和失败功能。 它可以更好地了解正在发生的事情。

      $.ajax({ type:'POST', url:'gateway', data:{test:'test'}, success: function(data){ if(data) { alert(data); } }, failure: function(){ alert(failed); } }) ; 

评论是否有任何错误

希望能帮助到你 :)。 如果这样的话,别忘了绿色:P

或更改PHP代码

header('Content-Type: application/json');
exit(json_encode(array('data' => 'Bla bla bla')));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM