Php 将JSON对象作为字符串而不是数组发送

Php 将JSON对象作为字符串而不是数组发送,php,jquery,json,Php,Jquery,Json,我有一根像这样的线 { "name":"John", "age":30, "city":"New York"} 我想把它完全按照上面看到的格式发布到PHP文件中,而不是作为数组。原因是我以后会在其他地方使用这个字符串,我没有必要对它进行内爆或重新格式化 这是我现在拥有的 var sentdata = '{ "name":"John", "age":30, "city":"New York"}'; $.ajax({ url: 'save.php', type: 'post',

我有一根像这样的线

{ "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当前正在输出以下内容:

数组([{“姓名”:“约翰”,“年龄”:30,{“城市”:“纽约”}]=>)

但是我想要一个基本的字符串,它看起来与
sentdata
中的字符串一模一样

我更喜欢Jquery/JSON解决方案,但如果我必须用PHP做些什么,那就这样吧


谢谢

您仍然可以作为对象发送,但添加字符串作为值本身

var sentdata = ['data' : '{"name":"John", "age":30, "city":"New York"}'];

然后以
$\u POST[“data”]

的形式访问它。代码应该是这样的,注意对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"]

您尚未设置请求的内容类型,因此PHP认为您正在发送
application/x-www-form-urlencoded
数据

由于字符串中没有
=
,因此它将其视为没有值的键,并用该数据填充
$\u POST

您需要显式设置内容类型请求头

$.ajax({
    url: 'save.php',
    contentType: "application/json",
    // etc

但是PHP不会自动处理JSON编码的请求<代码>$\u POST将为空


您需要按照描述手动解析JSON。

您需要
JSON.stringify()
sentdata,并在请求上设置contentType:“JSON”,您应该按照发送数据的方式接收数据,发布save.php查看数据转换的原因。我很难想象在哪里可以使用json对象作为字符串。@Taplar
sentdata
已经是一个字符串,正确的内容类型是
application/json
@Musa-我所拥有的只是$data=$\u post['data'];回波数据<代码>未捕获的语法错误:格式错误的箭头函数参数列表js语法不正确,它应该是
var sentdata={data:'…'}