首頁 >後端開發 >php教程 >要避免的 fetch() 和 XMLHttp 錯誤

要避免的 fetch() 和 XMLHttp 錯誤

Susan Sarandon
Susan Sarandon原創
2024-11-26 13:27:11240瀏覽

fetch() & XMLHttp errors to avoid

可悲的是,我沒有避免這些錯誤。我希望這可以幫助其他人在嘗試更新網頁而不完全下載新版本時避免它們。我最終得到的程式碼似乎有效:

async function fetchDbSingle(url, str) {
  const dataToSend = str;
  console.log('fetchDbSingle: ' + str);

  try {
    const response = await fetch(url, {
      method: 'POST',
      headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
      body: dataToSend
    });

    if (!response.ok) {
      throw new Error('Network response was not ok');
    }

    const data = await response.json();
    return data;
  } catch (error) {
    console.error('Error fetching data:', error);
    throw error; // Re-throw the error to be handled by the caller
  }
}

await 在非同步函數內工作,以確保資料在嘗試存取之前已到達。如果您需要從普通程式碼呼叫非同步函數,語法為 .then:

fetchDbSingle(url, str).then(data => {
  console.log("Received data:", data);
  // Use the data here
}).catch(error => {
  console.error("Error fetching data:", error);
}); 

如果您嘗試在不使用此特殊語法的情況下存取數據,則數據將是未定義的,因為您是在數據到達之前訪問它。

如果您嘗試存取標記位置之外的數據,它將是未定義的。

在我的程式中,fetch() 正在呼叫讀取資料庫的 PHP 腳本。

這裡有一些警告,對於有經驗的人來說可能毫無意義,但我希望我早點知道:

  • 請注意,PHP 將透過 echo 發送數據,在這種情況下,echo 不會出現在螢幕上。
  • 確保您的 PHP 檔案僅包含 PHP 程式碼;沒有 HTML。如果它包含 HTML,則傳回的資料將包含所有 HTML,這將非常混亂。
  • 確保 PHP 檔案(及其包含的任何檔案)只有一個 echo 語句。 (哦,檢查任何包含的文件的 html 或 echo)
  • Json_encode 將透過 echo 發送的內容。你可能想要 javascript json 解析它以使其成為 javascript 數組,但這不是必需的。

如果有人有興趣知道我為什麼提到上述警告,我可以寫一篇文章,介紹我所犯的錯誤以及我如何花了一周的時間來糾正這些錯誤,然後你就可以咯咯笑並感到優越。

以上是要避免的 fetch() 和 XMLHttp 錯誤的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn