[英]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.