フォームデータを入力するjavaサーブレット(クラス)があります。javascript:フォーム値をjavascriptに渡して、httprequestに処理するのに問題があります
フォームはこの<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">
ようになり、彼らが生成されたフォームのHTMLの頭の中にあるこのJavaScriptに投稿するように見ることができるように異なるIDでループ
//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>");
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がJava PreparedStatementに正しく挿入される方法です。私はURLEncodedの値で設定された変数を持つ単純なhtmlフォームを作成したときに、うまく挿入されるため、問題をJavaScriptのどこかに絞り込んだ。しかし、私はJavaScriptを介してそれを実行すると、私はヌルエラーが発生します
これを行うには、より良い方法がありますか、なぜ値がそれをしていないアイデアですか? JavaScriptは、Post'edまたはGetになるように文字列をエンコードする際にいくつかの作業を必要としますか?
ありがとうございます。
UPDATE: 私はリーチrequest.getParamterにするSystem.out.printlnを行なったし、スクリプトが 文字列itemdescription = URLDecoder.decode(request.getParameter( "itemdescription")、 "UTF-8")で停止します;ここ ので、それは明らかに( "UTF-8"、request.getParameter( "itemdescription"))URLDecoder.decodeに問題がある
エスケープとエスケープは廃止予定です - https://developer.mozilla.org/En/Core_JavaScript_1.5_Guide/Predefined_Functions/Escape_and_unescape_Functions –
私に知らせてくれてありがとう:) – objects