如何通过Ajax处理发送到PHP文件的JSON数据

时间:2014-04-30 06:35:10

标签: php jquery json

我有一个php文件,其中用户将填写表单,表单数据将以JSON格式发送到后端php文件,但我无法检索发送到php文件的JSON数据

// DATA SENDING ...

$(document).ready(function () {
            $('#submit').click(function () {
                var name, id, sec, base;
                name = $('#name').val();
                id = $('#id').val();
                sec = $('#pay').val();
                base = [{name: name, reg: id, sec: sec}];
                $.ajax({
                    url: '/post/json.php',
                    type: 'POST',
                    data: JSON.stringify(base),
                    contentType: 'application/json; charset=utf-8',
                    dataType: 'json',
                    async: false,
                    success: function (json) {
                        //do something ... after the data successfully processed via json.php 
                        }
                    }
                });
            });
        });

我试着写php作为简单文件来获取查询字符串并回显它但没有发生......但如果我发布简单查询字符串(通过jQuery)然后它的回声

// PHP BACKEND

<?php
  $ar= $_SERVER['QUERY_STRING'];    
  echo $ar;
?>

6 个答案:

答案 0 :(得分:0)

请阅读此页:Get JSON object from URL

$json = file_get_contents('url_here'); 
$obj = json_decode($json); echo
$obj->access_token;

$_SERVER['QUERY_STRING'];因为您通过POST发送数据而无法工作。

改为使用$_POST['base']

答案 1 :(得分:0)

您使用 POST 作为请求类型,因此提交的所有数据('name', 'red', 'sec')都可在预定义的$_POST数组中使用。

此外,您的JavaScript可以简化:

var name = $('#name').val();
var id = $('#id').val();
var sec = $('#pay').val();
$.post( "/post/json.php", {name: name, reg: id, sec: sec}, function( data ) {
    ...
});

答案 2 :(得分:0)

您需要获取POST数据,这不会作为查询字符串追加, 尝试使用$ _POST或通过post将其发送到变量。

尝试使用:

data: { base : JSON.stringify(base)},
// or data:'base =' + JSON.stringify(base),

然后在php文件中获取

$data = json_decode($_POST['base']);

更多信息:How to send json string to a php file using jquery submit?

答案 3 :(得分:0)

您正在使用http POST请求在服务器上提交数据,该数据可通过
访问 $_POST超全局数组。

如果您使用http GET请求,

$_SERVER['QUERY_STRING']将非常有用。

只需使用$_POST['name']$_POST['reg']等来访问提交的数据。

答案 4 :(得分:0)

你可以尝试一下

$(document).ready(function () {
    $('#submit').click(function () {
    ....
    base = {name: name, reg: id, sec: sec};
        $.ajax({
            ...
            data: base,
            dataType: 'json',
            ...
        });
    });
});

你的php BACKEND

$post = json_decode($_POST);

答案 5 :(得分:0)

您没有使用过帖子数据密钥,JSON数据将被发布到单个密钥

更改

  data: JSON.stringify(base)

data: "json="+JSON.stringify(base)

在服务器上获取数据

print_r(json_decode($_POST['json']));