gpt4 book ai didi

javascript - 如何从spring获取参数响应? (休息 Javascript)

转载 作者:行者123 更新时间:2023-12-04 10:43:55 34 4
gpt4 key购买 nike

我在向 html 返回错误时遇到问题。所以,我有带有“sql解释器”的网络应用程序。

HTML

<button type="submit" onclick="executeSQL('interpreterSQL')">
<i class="fas fa-bolt"></i>
</button>
<textarea id="interpreterSQL" placeholder="❔❔❔"></textarea>

enter image description here

在解释器中输入查询后,我在 javascript 中运行 POST 并拍摄到 spring:

JavaScript 中的 POST
function executeSQL(interpreterSQL) {
var tmp = document.getElementById(interpreterSQL).value;

var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
// Typical action to be performed when the document is ready:
var response = xhttp.responseText;
console.log("ok"+response);
}
};

xhttp.open("POST", "/user/executeSQL", true);
xhttp.send(tmp);
}

之后,我在我的服务中处理查询并将消息返回到我的 Controller 中的 POST:

Controller (Spring 中的 POST)
@PostMapping(path = { "/user/executeSQL" })
public ModelAndView executeSQL(@RequestBody String tmp) {
String[] split = tmp.replace("\n", "").replace("\t", "").split(";");
String feedback = databaseTableService.executeSQL(split);
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("successMessage", feedback);
modelAndView.setViewName("/user/interpreterSQL");
return modelAndView;
}

用于执行 native 查询的服务
public String executeSQL(String[] split){
SessionFactory hibernateFactory = someService.getHibernateFactory();
Session session = hibernateFactory.openSession();
String message = null;
for (int i = 0; i < split.length; i++) {
try{
String query = split[i];
session.doWork(connection -> connection.prepareStatement(query).execute());
message = "Success";
}
catch(Exception e){
message = ((SQLGrammarException) e).getSQLException().getMessage();
}

}
session.close();
return message;
}

所以最后我们在我的 Controller 中,它准备好返回值,我们有消息,其中包含有关 sql 异常的信息。我们在那里:

enter image description here

这是我的问题:如何获得可变的“反馈”作为回应?

我需要在那里处理这个值(value),我认为:
enter image description here

但是“var response = xhttp.responseText”正在返回我所有的 HTML 代码。我只需要 Controller 的参数“反馈”。
伙计们有人可以帮忙吗? :(我不知道如何返回该参数并在javascript中处理它...

最佳答案

也许您可以更改您的 Controler 方法以在 ModelAndView 上返回 JSON 响应。

@PostMapping(path = { "/user/executeSQL" })
public ResponseEntity<Object> executeSQL(@RequestBody String tmp) {
String[] split = tmp.replace("\n", "").replace("\t", "").split(";");
Map<String,String> response = new HashMap<String, String>();
response.put("feedback", databaseTableService.executeSQL(split));
return new ResponseEntity<>( response , HttpStatus.OK);
}

现在您应该能够看到状态
var response = xhttp.responseText;
console.log("ok"+response);

关于javascript - 如何从spring获取参数响应? (休息 Javascript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59802881/

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