在 javascript [重复] 中使用 fetch 方法发生错误

问题描述 投票:0回答:0

我的情况如下:

我有一个名为 func.php 的 php 文件,其中包含以下代码:

<?php

   if (isset ($_POST["funcName"]) && isset ($_POST["funcParams"])){
      switch ($_POST["funcName"]){
         case: "getItemsFromDatabase": echo json_encode (getItemsFromDatabase (...$_POST["funcParams"]));
         break;
         default: echo "No function selected.";
      }
    }

    // getItemsFromDatabase function goes here
?>

我还有一个名为 func.js 的 javascript 文件,其中包含以下方法:

function displayItemsAndPageSelector (file, name, params){
   $.post (file, {funcName: name, funcParams: params}, function (items){
      if(!items.length){
         document.getElementById ('no-results').innerHTML = 'No results found.';
      }
      else{
         displayItems (items, start_page);
         displayPageSelector (items);
         setItemsAndPageSelector (items);
      }
   }, 'json');
}

现在这就像一个魅力,但我想用普通的 javascript 重写它所以我改变了方法如下:

function displayItemsAndPageSelector (file, name, params){
   fetch (file, {
      method: 'POST',
      headers: {
         'Content-Type': 'application/json',
      },
      body: JSON.stringify ({funcName: name, funcParams: params}),
    }).then ((response) => response.json ())
    .then ((items) => {
       if (!items.length){
          document.getElementById ('no-results').innerHTML = 'No results found.';
       }
       else{
          displayItems (items, start_page);
          displayPageSelector (items);
          setItemsAndPageSelector (items);
       }
    }).catch ((error) => {
       console.error (error);
    });

但是这是行不通的。 我得到:SyntaxError: JSON.parse: JSON 数据的第 1 行第 1 列的数据意外结束。

此外,当我执行 console.log (response.json ());它说: 承诺{状态:“待定”}

所以我猜根本没有从数据库中检索到任何项目。

我已经尝试过以下方法:

  • 添加 'Accept': 'application/json' 到标题,但它没有帮助;
  • 用 response.text() 替换 response.json() 但它也没有帮助。

非常感谢您帮助我!

javascript post fetch-api
© www.soinside.com 2019 - 2024. All rights reserved.