我有一个看起来像这样的字符串
{ "name":"John", "age":30, "city":"New York"}
我希望将其完全按照上述格式而不是数组形式发布到PHP文件中。原因是我以后将在其他地方使用此字符串,而无需将其内爆或重新格式化。
这就是我现在所拥有的。
var sentdata = '{ "name":"John", "age":30, "city":"New York"}';
$.ajax({
url: 'save.php',
type: 'post',
data: sentdata,
success:function(response){
console.log('Updated');
}
});
PHP当前正在输出以下内容:
Array([{{“ name”:“ John”,“ age”:30,_“ city”:“ New_York”}] =>)
但是我想要一个基本字符串,看起来像sentdata
中的字符串。
我更喜欢Jquery / JSON解决方案,但是如果我必须在PHP中执行某些操作,那就这样吧。
谢谢!
答案 0 :(得分:2)
代码应如下所示,注意JS代码的更改
数据:{data:sentdata}
var sentdata = '{ "name":"John", "age":30, "city":"New York"}';
$.ajax({
url: 'save.php',
type: 'post',
data: {data: sentdata},
success:function(response){
console.log('Updated');
}
});
然后您在PHP代码中具有字符串变量:
$_POST["data"]
答案 1 :(得分:1)
您尚未设置请求的Content-Type,因此PHP认为您正在发送application/x-www-form-urlencoded
数据。
由于您的字符串中没有=
,因此它将其视为没有值的键,并使用该数据填充$_POST
。
您需要显式设置Content Type请求标头。
$.ajax({
url: 'save.php',
contentType: "application/json",
// etc
但是,PHP不会自动处理JSON编码的请求。 $_POST
将为空。
您需要按照in this question所述手动解析JSON。
答案 2 :(得分:0)
您仍然可以作为对象发送,但是将字符串添加为值本身。
var sentdata = ['data' : '{"name":"John", "age":30, "city":"New York"}'];
然后只需以$_POST["data"]
的身份访问它