我有一个使用
的phonegap应用程序$.ajax(
type: 'POST,
dataType:"json",
url: 'test.com'
data: { mail: 'bob@test.com' }
)
我在我的glassfish服务器上执行类似
的操作HttpServletRequest request;
request.getParameter('mail');
我正在以原生方式移动我的应用程序,所以我正在做
fetch('test.com', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({ mail: 'bob@test.com' }),
})
但是这不起作用,我的glassfish服务器没有得到我的参数。 我应该怎么做 ? 不言而喻,我不想在服务器端进行更改!
答案 0 :(得分:2)
在您的第一个示例中(使用$.ajax()
),您没有发送JSON
正文。您实际上是在发送查询字符串。在您的反应示例中,您发送的JSON
正文需要由服务器以不同方式处理。
您需要更改服务器处理程序以实际接受JSON
,否则您将需要发送带有react的查询字符串,如下所示:
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"
为查询字符串序列化数据并创建一个非常简单的函数是相当简单的。
作为旁注,为了通过JSON
电话发送$.ajax()
正文,您可能希望执行以下操作:
$.ajax(
type: 'POST,
dataType:"json",
url: 'test.com'
data: { mail: 'bob@test.com' }
contentType: "application/json",
)
请注意contentType
参数,该参数实际告诉jQuery
如何格式化请求正文