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

时间:2019-04-24 15:27:03

标签: 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',
    data: sentdata,
    success:function(response){
    console.log('Updated'); 
    }

});

PHP当前正在输出以下内容:

  

Array([{{“ name”:“ John”,“ age”:30,_“ city”:“ New_York”}] =>)

但是我想要一个基本字符串,看起来像sentdata中的字符串。

我更喜欢Jquery / JSON解决方案,但是如果我必须在PHP中执行某些操作,那就这样吧。

谢谢!

3 个答案:

答案 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"]的身份访问它