亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Javascript 獲取 api 有效負載未交付

Javascript 獲取 api 有效負載未交付

PHP
倚天杖 2022-10-22 16:22:51
console.log("data ", data); // returns an object in JSON format {propertyName: propertyValue}dataString = JSON.stringify(dataString); //correctly stringified jsonlet response = await fetch('updateRecevingEntry.php',                 {                method:'POST',                headers: {'Content-Type':'application/json'},                 body: dataString            }).then(response=>response.json()); 但是我在 php 端返回了一個未定義的索引。php在哪里:$matkey = $_POST['materialKey'];返回<b>Notice</b>:  Undefined index: materialKey in <b>path/updateRecevingEntry.php</b> on line <b>3</b><br />對于所有數據......沒有一個被抓住。那么為什么 _POST['propertyName'] 沒有從正文中捕獲 stringData 呢?我嘗試了一些變體,例如發送數據而不是與標頭混淆的字符串數據,但我似乎無法弄清楚如何發送有效負載以便 _POST['propertyName'] 捕獲數據身體。我以前在 jquery 中使用過 $.ajax,它正在工作:但我正在重構它。Fetch api對我來說是新的。我哪里錯了。我也不想在 php 端解析 json 對象。在閱讀了一個答案后,我得到了它在一種情況下的工作,但是        let response = await fetch('updateRecevingEntry.php',                 {                method:'POST',                headers: {'Content-Type':'application/json'},                 body: sendData              }).then(response=>response.json()); 和PHP$postData = json_decode(file_get_contents("php://input"), true);var_dump($postData);只是返回一個大胖NULL。編輯二:原來它實際上只需要通過 JSON.stringify(sendData) 進行編碼。自從。它按預期工作。
查看完整描述

1 回答

?
慕仙森

TA貢獻1827條經驗 獲得超8個贊

我注意到的第一件事是您沒有使用正確的變量(您正在使用stringData而不是dataString):


dataString = JSON.stringify(dataString); //correctly stringified json


let response = await fetch('updateRecevingEntry.php', {

    method:'POST',

    headers: {'Content-Type':'application/json'}, 

    body: dataString    

}).then(response=>response.json());

盡管您在使用 json 標頭發送它時不需要對其進行字符串化。


此外,您是否嘗試過$_POST使用 ,而不是php://input?


來自PHP.net:


php://input 是一個只讀流,允許您從請求正文中讀取原始數據。對于 POST 請求,最好使用 php://input 而不是 $HTTP_RAW_POST_DATA,因為它不依賴于特殊的 php.ini 指令。此外,對于那些默認情況下不填充 $HTTP_RAW_POST_DATA 的情況,與激活 always_populate_raw_post_data 相比,它可能是一種內存密集度較低的替代方案。php://input 不適用于 enctype="multipart/form-data"。


所以你會像這樣使用它:


$postData = json_decode(file_get_contents("php://input"), true);

$matkey = $postData['materialKey'];

這會將 POST 請求的主體讀取為 JSON 字符串,然后將其轉換為 PHP 數組。


查看完整回答
反對 回復 2022-10-22
  • 1 回答
  • 0 關注
  • 75 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號