将 fetch 与方法 post 结合使用
Using fetch with method post
我有一个使用
的 phonegap 应用程序
$.ajax(
type: 'POST,
dataType:"json",
url: 'test.com'
data: { mail: 'bob@test.com' }
)
我在我的 glassfish 服务器上做了类似
的事情
HttpServletRequest request;
request.getParameter('mail');
我正在将我的应用程序移动到 React Native,所以我正在做
fetch('test.com', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({ mail: 'bob@test.com' }),
})
但这不起作用,我的 glassfish 服务器没有获取我的参数。
我应该怎么做 ?
不用说,我不想在服务器端进行更改!
在您的第一个示例中(使用 $.ajax()
)您没有发送 JSON
正文。您实际上是在发送查询字符串。在您的反应示例中,您正在发送一个 JSON
主体,您的服务器需要以不同方式处理它。
您将需要更改您的服务器处理程序以实际接受 JSON
,或者您将必须发送带有反应的查询字符串,类似于:
fetch('test.com', {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
body: $.param({ mail: 'bob@test.com' }),
})
如果您无法访问 jQuery
,您将无法使用 $.param()
。对于此特定示例,您要发送的查询字符串为
body: "mail=bob@test.com"
序列化查询字符串的数据并创建一个函数非常简单。
附带说明一下,为了通过 $.ajax()
调用发送 JSON
正文,您需要执行以下操作:
$.ajax(
type: 'POST,
dataType:"json",
url: 'test.com'
data: { mail: 'bob@test.com' }
contentType: "application/json",
)
注意 contentType
参数,它实际上告诉 jQuery
如何格式化请求的正文
我有一个使用
的 phonegap 应用程序$.ajax(
type: 'POST,
dataType:"json",
url: 'test.com'
data: { mail: 'bob@test.com' }
)
我在我的 glassfish 服务器上做了类似
的事情HttpServletRequest request;
request.getParameter('mail');
我正在将我的应用程序移动到 React Native,所以我正在做
fetch('test.com', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({ mail: 'bob@test.com' }),
})
但这不起作用,我的 glassfish 服务器没有获取我的参数。 我应该怎么做 ? 不用说,我不想在服务器端进行更改!
在您的第一个示例中(使用 $.ajax()
)您没有发送 JSON
正文。您实际上是在发送查询字符串。在您的反应示例中,您正在发送一个 JSON
主体,您的服务器需要以不同方式处理它。
您将需要更改您的服务器处理程序以实际接受 JSON
,或者您将必须发送带有反应的查询字符串,类似于:
fetch('test.com', {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
body: $.param({ mail: 'bob@test.com' }),
})
如果您无法访问 jQuery
,您将无法使用 $.param()
。对于此特定示例,您要发送的查询字符串为
body: "mail=bob@test.com"
序列化查询字符串的数据并创建一个函数非常简单。
附带说明一下,为了通过 $.ajax()
调用发送 JSON
正文,您需要执行以下操作:
$.ajax(
type: 'POST,
dataType:"json",
url: 'test.com'
data: { mail: 'bob@test.com' }
contentType: "application/json",
)
注意 contentType
参数,它实际上告诉 jQuery
如何格式化请求的正文