簡體   English   中英

將JSON對象作為字符串而非數組發送

[英]Send JSON object as string not array

我有一個看起來像這樣的字符串

{ "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目前正在輸出:

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

但我想要一個看起來與sentdata完全相同的基本字符串。

我更喜歡Jquery / JSON解決方案,但如果我必須在PHP中做一些事情,那就這樣吧。

謝謝!

代碼應該看起來這樣,注意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"]

您尚未設置請求的Content-Type,因此PHP認為您正在發送application/x-www-form-urlencoded數據。

由於您的字符串中沒有= ,因此將其視為沒有值的鍵,並使用該數據填充$_POST

您需要顯式設置內容類型請求標頭。

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

但是, PHP不會自動處理JSON編碼的請求。 $_POST將為空。

您需要按照此問題中的描述手動解析JSON。

您仍然可以作為對象發送,但添加字符串作為值本身。

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

然后只需將其作為$_POST["data"]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM