首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何发送带有fetch的数组?(Javascript)

如何发送带有fetch的数组?(Javascript)
EN

Stack Overflow用户
提问于 2019-05-31 13:23:40
回答 2查看 11.8K关注 0票数 5

我试图使用fetch发送一个数组,如下所示:

代码语言:javascript
运行
复制
{"cards":[[189,2],[211,2],[238,2],[778,2],[985,2],[1008,2],[1073,2],[1171,2],[48886,2],[49161,2],[49164,2],[49184,1],[49356,2],[50372,2],[51722,1],[52422,2]],"heroes":[1066],"format":2}

以下是我所尝试的:

代码语言:javascript
运行
复制
 getCardsForDeck = deck => {
    var stringifiedDeck = JSON.stringify(deck);
    console.log("stringifiedDeck:" + stringifiedDeck);
    fetch(`http://localhost:3001/api/getCardsForDeck`, {
      method: "PUT",
      body: stringifiedDeck
    })
      .then(cards => cards.json())
      .then(res => this.setState({ cards: res.cards }));
  };

不过,我收到了一个错误:

代码语言:javascript
运行
复制
Unhandled Rejection (SyntaxError): Unexpected token < in JSON at position 0

如果没有使用JSON.stringify(),如何发送这些数据?还是必须编辑数据以删除括号?

在检查网络选项卡中的api时,它给出了以下内容:

代码语言:javascript
运行
复制
     SyntaxError: Unexpected token o in JSON at position 1
[0]     at JSON.parse (<anonymous>)
[0]     at parse (C:\Users\User\projects\webapp\deck-editor\backend\node_modules\body-parser\lib\types\json.js:89:19)
[0]     at C:\Users\User\projects\webapp\deck-editor\backend\node_modules\body-parser\lib\read.js:121:18
[0]     at invokeCallback (C:\Users\User\projects\webapp\deck-editor\backend\node_modules\raw-body\index.js:224:16)
[0]     at done (C:\Users\User\projects\webapp\deck-editor\backend\node_modules\raw-body\index.js:213:7)
[0]     at IncomingMessage.onEnd (C:\Users\User\projects\webapp\deck-editor\backend\node_modules\raw-body\index.js:273:7)
[0]     at IncomingMessage.emit (events.js:194:15)
[0]     at endReadableNT (_stream_readable.js:1125:12)
[0]     at process._tickCallback (internal/process/next_tick.js:63:19)
[0] SyntaxError: Unexpected token o in JSON at position 1
[0]     at JSON.parse (<anonymous>)
[0]     at parse (C:\Users\User\projects\webapp\deck-editor\backend\node_modules\body-parser\lib\types\json.js:89:19)
[0]     at C:\Users\User\projects\webapp\deck-editor\backend\node_modules\body-parser\lib\read.js:121:18
[0]     at invokeCallback (C:\Users\User\projects\webapp\deck-editor\backend\node_modules\raw-body\index.js:224:16)
[0]     at done (C:\Users\User\projects\webapp\deck-editor\backend\node_modules\raw-body\index.js:213:7)
[0]     at IncomingMessage.onEnd (C:\Users\User\projects\webapp\deck-editor\backend\node_modules\raw-body\index.js:273:7)
[0]     at IncomingMessage.emit (events.js:194:15)
[0]     at endReadableNT (_stream_readable.js:1125:12)
[0]     at process._tickCallback (internal/process/next_tick.js:63:19)
EN

Stack Overflow用户

回答已采纳

发布于 2019-05-31 13:31:13

您似乎期望http://localhost:3001/api/getCardsForDeck将JSON 发送回,然后将JSON 发送给。很可能是用HTML响应,而不是JSON。

该代码中还有另外两个错误:

  1. 您需要说明所发送的内容,因为这不是默认的URI编码数据: 获取(http://localhost:3001/api/getCardsForDeck,{方法:"PUT",主体: stringifiedDeck,标题:{ // *“内容-类型”:"application/json“// **} // * })
  2. 您需要检查响应的状态。(每个人都想念这个。)最简单的方法是检查响应中的ok标志: fetch(http://localhost:3001/api/getCardsForDeck,{ method:"PUT",body: stringifiedDeck,headers:{“Content”:"application/json“} }) .then(响应=> { if (!response.ok) { // *)抛出新错误(”HTTP“+ response.status);// *} // * // ...use response.jsonresponse.text等) .catch(error => { // .handle/report error });
票数 6
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56395941

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档