繁体   English   中英

AJAX POST JSON到PHP在PHP中没有DATA

[英]AJAX POST JSON to PHP issue No DATA in PHP

我无法通过jQuery Ajax发送$_POST数据。 我已经阅读了有关此事的所有内容,但我仍无处可去。 我甚至回到了非常基本的数据,但仍然没有,JSON数据已经使用JSON验证站点进行了验证。 对于我的生活,我无法echo / print_r / var_dump或访问任何数据。

我的JavaScript:

$('#updateJSON').click(function(){
    var content = [{
                        "id": 21,
                        "children": [{
                            "id": 196
                        }, {
                            "id": 195
                        }, {
                            "id": 49
                        }, {
                            "id": 194
                        }]
                }];
    var someText = "someText";
        $.ajax({
             type: 'POST',
             url: 'test.php',
             data: {data: content},
             cache: false,
             success: function(){  
                 alert("success");
                 console.log(content);
                 window.location = "test.php";
             },
             error:function(){
                 alert('ajax failed');    
             }   
        }); 
}); 

我的PHP:

<?php
if(isset($_POST['data'])) {
    $json = stripslashes($_POST['data']);
    var_dump(json_decode($json, true));
} else {
    echo "No Data";
}
?>

所以我得到的alert("success")然后重定向到test.php一次test.php我得到的回声“无数据”。

提前感谢您对此问题的任何帮助。

原因是您使用window.location重定向到PHP文件(没有任何发布数据),而不是在test.php上发布表单。

您应该在test.php上发布没有ajax的表单。

或者在success函数中使用test.php的响应。

$('#updateJSON').click(function(){
    var content = [{
                        "id": 21,
                        "children": [{
                            "id": 196
                        }, {
                            "id": 195
                        }, {
                            "id": 49
                        }, {
                            "id": 194
                        }]
                }];
    var someText = "someText";


$.ajax({
         type: 'POST',
         url: 'test.php',
         data: {data: content},
         cache: false,
         success: function(response){  
             alert("success");
             console.log(response);
             //window.location = "test.php";
         },
         error:function(){
             alert('ajax failed');    
         }   
  }); 

您将数据作为字符串传递给ajax文件。 请使用JSON.stringify(conten)在ajax文件中以json格式传递数据。

采用

data: {data: JSON.stringify(content)}

代替

data: {data: content}

采用:

<?php
    $postdata = file_get_contents("php://input");
    $request = json_decode($postdata);

然后按如下方式访问每个字段:

       $field1 = @$request->field1Name;
       $field2 = @$request->field2Name;
etc..

编辑:

那么,答案的第一部分仍然有效。

我已经尝试了你的代码,并在我的机器上略微修改了它,我能够访问整个数据,如下所示:

Javascript:从JSON外部删除了方括号,并从ajax的'data'部分删除了大括号,因为它们不是必需的

正如你所看到的,我还将“数据”添加到成功函数中,这样我就可以更好地调试test.php的响应

 $(document).ready(function(){ $('#updateJSON').click(function(){ var content = { "id": 21, "children": [{ "id": 196 }, { "id": 195 }, { "id": 49 }, { "id": 194 }] }; var someText = "someText"; $.ajax({ type: 'POST', url: 'test.php', data: JSON.stringify(content), cache: false, success: function(data){ alert(data); console.log(content); }, error:function(){ alert('ajax failed'); } }); }); }); 

PHP:

<?php

$postdata = file_get_contents("php://input");
$request = json_decode($postdata);
$field1 = @$request->id;
echo $field1;

和$ field1回显为“21”,正确答案

您可以将其应用于您的代码并进行检查。

感谢大家的帮助,我已经设法在你们每个人的帮助下弄清楚了。

我需要在test.php文件中创建一个$ json = array(),然后填充数组,$ json [] = json_decode($ _ POST ['data']);

然后允许我将内容放在JSON文件中。

这是PHP代码:

<?php
$json = array();
if($_POST['data']) {
$json[] = json_decode($_POST['data']);
file_put_contents("../JSON/test.json",json_encode($json)); 
} else {
echo "No Data";
}
?>

只要文件“JSON / test.json”存在,它就会编写从JS传递的JSON。

我想说明一下:

没有JSON.stringify(内容); 数据是NULL所以谢谢你@ Rahul Patel确保这个被应用。

根据JSON验证站点,JSON数据是valide。

也只是为了保持JS代码:

$('#updateJSON').click(function(){
    var content = {
                        "id": 21,
                        "children": [{
                            "id": 196
                        }, {
                            "id": 195
                        }, {
                            "id": 49
                        }, {
                            "id": 194
                        }]
                };

        $.ajax({
             type: 'POST',
             url: 'test.php',
             data: {data: JSON.stringify(content)},
             cache: false,
             success: function(){  
             alert("JSON Updated");
             },
             error:function(){
                 alert('ajax failed');    
             }   
        }); 

}); 

暂无
暂无

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

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