无法在 React Native 中执行 POST 请求
Unable to perform POST request with fetch in react native
我正在尝试对由节点中的 json 服务器提供的 json 文件执行 POST 操作。我在尝试执行所述 POST 操作时收到以下 500 错误:
"TypeError: 无法读取未定义的 属性 'id'
在 Function.createId"
post操作如下:
pushState = () => {
var update = {
"a": 1,
"b": 2
};
return fetch(url, {
mode: 'cors',
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify(update)
})
.then((response) => {
console.log(response);
response.text();
})
.then((responseData) => {
console.log("Response:",responseData);
}).catch((error) => {
console.log(error);
})
.done();
}
我是否正确执行了 POST 请求?
编辑: 添加 async 和 await 后我仍然得到同样的错误:
pushState = async () => {
var update = {
"a": 1,
"b": 2
};
var result = await fetch(url, {
mode: 'cors',
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify(update)
})
.then((response) => {
console.log(response);
return response;
})
.catch((error) => {
console.log(error);
});
return result;
}
这里有两个问题:
- 您没有 return 从
fetch
. 获取任何内容
fetch
是异步的。按照你现在用 pushState
return 立即调用它的方式,它几乎总是 return undefined
当你出错时。您需要使用 async/await. 编写 pushState
编辑回复评论:
由于您使用的是函数箭头语法,因此使 pushState
异步将如下所示:
pushState = async () => { /* code */ }
为了帮助您了解 fetch
的工作原理,我建议您阅读 this first. Then to understand async/await at a high level, read this article。您生成的代码将如下所示:
pushState = async () => {
var update = {
"a": 1,
"b": 2
};
var result = await fetch(...) // Remember to return something.
return result;
}
我正在尝试对由节点中的 json 服务器提供的 json 文件执行 POST 操作。我在尝试执行所述 POST 操作时收到以下 500 错误:
"TypeError: 无法读取未定义的 属性 'id' 在 Function.createId"
post操作如下:
pushState = () => {
var update = {
"a": 1,
"b": 2
};
return fetch(url, {
mode: 'cors',
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify(update)
})
.then((response) => {
console.log(response);
response.text();
})
.then((responseData) => {
console.log("Response:",responseData);
}).catch((error) => {
console.log(error);
})
.done();
}
我是否正确执行了 POST 请求?
编辑: 添加 async 和 await 后我仍然得到同样的错误:
pushState = async () => {
var update = {
"a": 1,
"b": 2
};
var result = await fetch(url, {
mode: 'cors',
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify(update)
})
.then((response) => {
console.log(response);
return response;
})
.catch((error) => {
console.log(error);
});
return result;
}
这里有两个问题:
- 您没有 return 从
fetch
. 获取任何内容
fetch
是异步的。按照你现在用pushState
return 立即调用它的方式,它几乎总是 returnundefined
当你出错时。您需要使用 async/await. 编写
pushState
编辑回复评论:
由于您使用的是函数箭头语法,因此使 pushState
异步将如下所示:
pushState = async () => { /* code */ }
为了帮助您了解 fetch
的工作原理,我建议您阅读 this first. Then to understand async/await at a high level, read this article。您生成的代码将如下所示:
pushState = async () => {
var update = {
"a": 1,
"b": 2
};
var result = await fetch(...) // Remember to return something.
return result;
}