簡體   English   中英

jQuery $ .post和php $ _POST

[英]jquery $.post and php $_POST

我正在嘗試使用jquery將數據傳遞給php。 我正在使用javascript獲取數據。

jQuery的:

$.post("export.php", JSON.stringify(result)); //result is an array of object

當我在chrome上使用調試器時,我可以在表單數據中看到如下內容:[{“ id”:“ foo”,“ x”:0,“ y”:1,“ z”:8,“ t” :3}]:

但是當我試圖用php檢索它時,它不起作用:

echo 'Before decode ';
$array=$_POST['data'];
echo 'After decode ';
echo $array;

而且它只是在呼應:解碼之前解碼之后

我想念什么? (我知道我應該解碼數據以返回php中的數組,但是我簡化了它以查看問題出處)

如果要發送編碼的JSON字符串並通過$_POST['data']訪問它,則需要將結果包裝在包含關鍵data的對象中:

$.post("export.php", {data: JSON.stringify(result)});

然后,您可以在服務器中像這樣解碼它:

echo 'Before decode ';
$array = json_decode($_POST['data']);
echo 'After decode ';
print_r($array);

嘗試將您的json發布到data變量中,那么您將在export.php上獲得$_POST['data']

$.post("export.php", {data : result});

或者您可以使用file_get_contents()獲取不帶變量的已發布數據

$data = file_get_contents('php://input');

並將其解碼json_decode()

通常,您甚至不必將數據轉換為JSON:

$.post("export.php", { data: result });

或者,您必須從輸入流中釣出JSON編碼的主體,即:

$array = json_decode(file_get_contents('php://input'), true);

如果請求正文的內容類型未廣告為application/x-www-form-urlencoded則通常會發生這種情況。

當您發布原始JSON數據時,PHP不知道如何對其進行解碼,並且不會填充$_POST 您必須自己解析。 未經測試,但請嘗試以下操作:

print_r(
  json_decode(
    file_get_contents('php://input')
  )
);

請注意,由於您要發布JSON,因此我強烈建議您改用$.ajax以便您可以設置contentType: 'application/json'

暫無
暫無

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

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