gpt4 book ai didi

java - 带有 Ajax 的 Servlet - POST 有效,但 GET 无效

转载 作者:行者123 更新时间:2023-11-30 00:30:13 26 4
gpt4 key购买 nike

我正在开发一个应用程序,它可以计算公式中的数字。在 html 中我把这个:

<input type="text" size="20" id="number2" onblur="validate2()"  
onFocus = "document.getElementById('msg2').innerHTML = ' '">
<br>
<div id = "message1">&nbsp</div>

我创建了一个 javascript,它首先验证数据,然后将它们插入“answer-formula”:

function validate2() {
var idField2 = document.getElementById("number2");
var data2 = "number2=" + encodeURIComponent(idField2.value);
if (typeof XMLHttpRequest != "undefined") {
req = new XMLHttpRequest();
} else if (window.ActiveXObject) {
req = new ActiveXObject("Microsoft.XMLHTTP");
}
var url = "Validator"
req.open("GET", url, true);
req.onreadystatechange = inserter2
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")

;
req.send(data2);
}

function inserter2() {
if (req.readyState == 4) {
if (req.status == 200) {
var msg1 = req.responseText
if (msg1 == "") {
document.getElementById("message1").innerHTML = "<div style=\"color:red\">Zła nazwa</div>";
document.getElementById("org").value = ''
}
else
document.getElementById("org").value = msg2
}
}
}

这是我的代码,其中将它作为 doGet 发送:

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("GET");

response.setContentType("text/html");
Writer out = response.getWriter();
String num2 = request.getParameter("number2");
System.out.println(num2);
String org = new String();
if(num2.matches("[\\p{Punct}\\d]+")) {
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("JavaScript");
try {
org = engine.eval(num2).toString() + " (" + request.getMethod() + ")";
} catch (Exception e) {
e.printStackTrace();
}
}
out.write(org != null ? org : "");
}

如果我们把所有这些东西都改到 Post 中,这段代码就可以工作,但是现在和 GET 一样,它根本就不能工作。另一种奇怪的情况是,使用POST的公式可以读取公式中写的东西,但是当我们使用GET时,程序看到公式源为空。

最佳答案

如果用get方式发送,需要把公式放到request中。这个表达式:

req.send(data2);

在您发送 GET 请求时没有意义,因为 GET 请求不能包含除请求字符串之外的任何有效负载。所以你必须将有效负载添加到你的网址。像这样:

var url = "Validator/?" + data2;
req.open("GET", url, true);
req.onreadystatechange = inserter2;
req.send();

希望对您有所帮助。

关于java - 带有 Ajax 的 Servlet - POST 有效,但 GET 无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29875532/

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