簡體   English   中英

Javascript:使用 fetch 將數據發布到 PHP

[英]Javascript: Post data to PHP with fetch

我正在使用 Ajax 通過 POST 方法向 PHP 提交數據。

我有兩個問題:

  1. 有沒有更好的方法序列化數據而不是這樣做

const reqData = 'id= + ' myobj.id + '&name=' + myobj.name'

請注意這個 ^ 數據是一個對象而不是表單數據。

  1. 如何將 ajax 調用轉換為 fetch

我試過這樣做。 它返回 200 響應代碼。 但是php沒有保存數據。

async function updateCountry(url, data) {
  const response = await fetch(url, {
    method: 'POST',
    headers: {
      Accept: 'application/json',
      'Content-Type': 'application/json',
    },

    body: data,
  });
  return response;
}

updateCountry('some-url', data).then(resp => console.log(resp)).catch(err => console.log(err))

這是我的 Ajax 代碼:

const reqData = `id=${myobj.id}&name=${myobj.name}`;

$.ajax({
  type: 'POST',
  url: 'my-php-script-url',
  data: reqData,
  success: function (response) {
    console.log(typeof response);

    $('#saving-btn').hide();

    if (response.includes('success')) {
      $('#saved-btn').show();
      setTimeout(() => {
        $('#saved-btn').hide();
      }, 3000);
    } else {
      $('#error-btn').show();
      setTimeout(() => {
        $('#error-btn').hide();
      }, 3000);
    }
  },
  error: function (err) {
    console.log(err);
  },
});

PHP 不自動支持 JSON 參數,它要求參數是 URL 編碼的或 FormData。

如果對象鍵與 post 參數相同,您可以編寫一個循環來創建 URL 編碼的字符串:

 async function updateCountry(url, data) { const reqData = Object.entries(myobj).map(([key, value]) => key + '=' + encodeURIComponent(value)).join('&'); const response = await fetch(url, { method: 'POST', headers: { Accept: 'application/json', 'Content-Type': 'application/x-www-form-urlencoded', }, body: reqData, }); return response; }

暫無
暫無

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

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