gpt4 book ai didi

javascript - 将包含 JSON 数据的 POST 请求从 HTML 发送到 Java Rest Web 服务时出现 HTTP 错误 415

转载 作者:行者123 更新时间:2023-12-02 10:15:18 24 4
gpt4 key购买 nike

我正在尝试使用 javascript 和 ajax 将数据从 index.html 内的 HTML 表单作为 JSON 数据发送到 Java REST Web 服务。我尝试了迄今为止在网上找到的所有内容,但每次我都会收到 HTTP 错误 415。

我知道该错误的含义,但不知道我错在哪里,因为我对 javascript 还不太熟悉。

这是代码:

index.html

div style="text-align:center">
<form action="http://localhost/MyTaskTest/servicea" method="post"
id="test">
<fieldset>
<legend>Add to Your balance</legend>
<label for="amount">Money amount</label>
<input type="text" name="Amount" /> <br/>
<label for="currency">Select currency</label>
<select name="Currency">
<option value="eur">EUR</option>
</select>
<input type="submit" value="Add">
</fieldset>
</form>
</div>

<script
src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js">
</script>
<script>

(function() {
function toJSONString( form ) {
var obj = {};
var elements = form.querySelectorAll( "input, select" );
for( var i = 0; i < elements.length; ++i ) {
var element = elements[i];
var name = element.name;
var value = element.value;

if( name ) {
obj[ name ] = value;
}
}

return JSON.stringify( obj );
}


window.onload = function() {
var form = document.getElementById("test");
var output = document.getElementById("output");
form.onsubmit = function( e ) {
e.preventDefault();
var json = toJSONString( this );
console.log(json);
console.log("TEST");
$.ajax({
url: form.getAttribute( 'action' ),
headers: {
'Accept': 'application/json',
'Content-Type': "application/json; charset=utf-8"
},
type: 'POST',
data: json,
success: function(data) {
alert("data saved")
console.log("SUCCESS");
},
error: function() {
console.log("ERROR");
console.log(errorThrown);
}
})
};
}

})();

</script>

这是 REST 服务:

@Path("/")
public class ServiceA {

@POST
@Path("/servicea")
//@Consumes(MediaType.APPLICATION_JSON)
public Response postRequest(String obj) {
String res = "hii";
return Response.status(200).entity(obj).build();
}

编辑

我编辑了我的代码...现在它可以工作了。但为什么我需要将参数设置为 String 而不是 JSONObject 并删除 @Consumes ?在控制台中,我从 ajax 发送的变量中获取此数据:{"Amount":"213","Currency":"eur"} ...所以我发送 JSON,但服务仅在参数为字符串时才有效。

最终编辑

我设法解决了这个问题,我缺少 jersey-json 的依赖项。谢谢:)

最佳答案

您的代码存在一些错误,请尝试在chrome开发者工具中进行调试。我做了一些改变,它是有效的

    (function() {
function toJSONString( form ) {
var obj = {};
var elements = form.querySelectorAll( "input, select" );
for( var i = 0; i < elements.length; ++i ) {
var element = elements[i];
var name = element.name;
var value = element.value;

if( name ) {
obj[ name ] = value;
}
}

return JSON.stringify( obj );
}

window.onload = function() {
var form = document.getElementById("test");
var output = document.getElementById("output");
form.onsubmit = function( e ) {
e.preventDefault();
var json = toJSONString( this );
console.log(json);
$.ajax({
url: form.getAttribute( 'action' ),
headers: {
'Accept': 'application/json',
'Content-Type': "application/json; charset=utf-8"
},
type: 'POST',
data: json,
success: function(data) {
alert("data saved")
},
error: function() {
console.log(errorThrown);
}
})
};
}

})();

关于javascript - 将包含 JSON 数据的 POST 请求从 HTML 发送到 Java Rest Web 服务时出现 HTTP 错误 415,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54728158/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com