[英]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.