gpt4 book ai didi

JavaScript : having trouble passing form values to javascript and processing it to httprequest

转载 作者:太空宇宙 更新时间:2023-11-04 09:00:05 24 4
gpt4 key购买 nike

我有一个填充表单数据的 java servlet(类)。

  //encode string for special characters
String encodedString = URLEncoder.encode(desc, "UTF-8");

out_table.append("<form name=\"masinsert"+id+"\" method=\"GET\" action=\"MASInsert2\">\n");

out_table.append("<input type=hidden id=\"partnumber"+id+"\" name=\"partnumber"+id+"\" value=\""+part+"\">\n");
out_table.append("<input type=hidden id=\"itemdescription"+id+"\" name=\"itemdescription"+id+"\" value=\""+encodedString+"\">\n");


out_table.append("<tr><td colspan=2><input id=\"m"+id+"\" type=\"button\" onclick=\"masinsert('"+ id +"')\" value=\"Add\"></td></tr>");

如您所见,它使用不同的 id 进行循环,因此表单将如下所示

<form name="masinser12" method="GET" action="MASInsert2">
<input type=hidden id="partnumber12" name="partnumber12" value="9999">
<input type=hidden id="itemdescription12" name="itemdescription12" value="1. test description">
<input id="m12" type="button" onclick="masinsert('"+ id +"')" value="Add">

<form name="masinser13" method="GET" action="MASInsert2">
<input type=hidden id="partnumber13" name="partnumber13" value="2222">
<input type=hidden id="itemdescription13" name="itemdescription13" value="2. test description">
<input id="m12" type="button" onclick="masinsert('"+ id +"')" value="Add">

他们发布到这个 javascript,它位于生成表单的 html 头部

function masinsert(id)
{
var currentTime=new Date();


var button = document.getElementById("m"+id);
button.onclick="";
button.value="Inserting";

var partnumber = document.getElementById("partnumber"+id).value;
var itemdescription = document.getElementById("itemdescription"+id).value;


function handleHttpResponse()
{
if (http.readyState == 4) {
button.value="Item Added";
}
}


var http = getHTTPObject(); // We create the HTTP Object
var tempUrl = "\MASInsert2";
tempUrl += "?partnumber="+partnumber+"&"+"itemdescription="+itemdescription+"&"+"itemshortdescription="+itemdescription.substring(0,37)
alert(tempUrl);
http.open("GET", tempUrl, true);
http.onreadystatechange = handleHttpResponse;
http.send(null);
}

function getHTTPObject(){
var xmlhttp;
/*@cc_on
@if (@_jscript_version >= 5)
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}catch (e){
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}catch (E) {
xmlhttp = false;
}
}
@else
xmlhttp = false;
@end @*/
if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
try {
xmlhttp = new XMLHttpRequest();
} catch (e) {
xmlhttp = false;
}
}
return xmlhttp;
}

JavaScript 转身并发送到这个 java 文件,该文件将数据与片段一起插入数据库

String partnumber = request.getParameter( "partnumber");
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String itemdescription = URLDecoder.decode(request.getParameter( "itemdescription"), "UTF-8");
String itemshortdescription = request.getParameter( "itemshortdescription");
out.println(itemimport(partnumber,itemdescription, itemshortdescription));
}

{ private String itemimport (String partnumber, String itemdescription, String itemshortdescription){
---
---
}

为了便于阅读,我决定缩短参数数量。我遇到的主要问题是 URLDecoding 和 URLEncoding 如何正确传输以插入到 JavaPreparedStatement 中。我已经将问题范围缩小到了 javascript 中的某个地方,因为当我创建一个简单的 html 表单并使用 URLEncoded 值填充变量时,它插入得很好。但是,当我通过 JavaScript 运行它时,出现 Null 错误

有没有更好的方法来做到这一点,或者有什么想法为什么这些值(value)观没有通过?在对要发布或获取的字符串进行编码时,javascript 是否需要进行一些处理?

提前致谢。

更新:我刚刚在到达 request.getParamter 时执行了 System.out.println ,脚本停止于 String itemdescription = URLDecoder.decode(request.getParameter("itemdescription"), "UTF-8");所以显然 URLDecoder.decode(request.getParameter("itemdescription"),"UTF-8") 有问题

最佳答案

这里有一些可以尝试的事情:在 JavaScript 中,使用 encodeURIComponent 对 URL 参数进行编码:

tempUrl +=  "?partnumber="+encodeURIComponent(partnumber)+"&"+"itemdescription="+encodeURIComponent(itemdescription)+"&"+"itemshortdescription="+encodeURIComponent(itemdescription.substring(0,37))

接下来,您可能必须使用 setCharacterEncoding 设置请求的编码

最后,我认为如果您调用 request.getParameter,它会为您执行 URLDecoding。

关于JavaScript : having trouble passing form values to javascript and processing it to httprequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/953400/

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