我收到了回复整个表格的回复。 N行,每行有7个单元格。所以我最终得到了nX7的回复。显然,我应该使用JSON来适当地处理字符串。我已经找到了关于如何创建JSON对象的教程,但没有关于如何通过ajax发送它以及如何通过ajax发送它,jsp知道用响应填充JSON对象......换句话说,
我没有使用jquery,因为我还在学习,而jquery的语法目前令人困惑。
var sweekStart = document.getElementById("weekStart").value;
var smonth = document.getElementById("month").value;
var syear = document.getElementById("year").value;
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
var url = "empTableRepop.jsp?weekStart=" + encodeURIComponent(sweekStart)+"&month="+encodeURIComponent(smonth)+"&year="+encodeURIComponent(syear);
xmlhttp.open("POST",url,true);
//alert("made it to open");
xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState == 4){
//alert(xmlhttp.responseText);
var test = xmlhttp.responseText;
reFillTable(test);
}
}
xmlhttp.send(null);
变量“test”(是的,坏名称但它是临时的)是我想要从标准var转换为JSONobject的对象。如果我理解正确,JSON在收到响应时已经解析了字符串。我意识到我可以将“function()”更改为直接“reFillTable(test)”,但是考虑到它让我开始工作的路径,我最终以某种方式结束了大声笑。一旦一切正常,将会修复。
编辑:
这是我“显示”来自jsp / java文件的信息的方式。
//Name Cell
out.println(empName);
//Mondays Hours
out.println(hoursArr[0]);
//Tuesdays Hours
out.println(hoursArr[1]);
//Wednesdays Hours
out.println(hoursArr[2]);
//Thursdays Hours
out.println(hoursArr[3]);
//Fridays Hours
out.println(hoursArr[4]);
//Total hours Cell
out.println(PTOAmt);
答案 0 :(得分:0)
假设您的serverresponse已经在工作,这将为您提供收到的JSON中的JavaScript对象。
var test = JSON.parse( xmlhttp.responseText );
澄清:JavaScript中没有明确的“JSONObject”。 JSON代表JavaScript Object Notation,它只是编写普通JavaScript对象的简写。然而,它变得流行,作为通过AJAX请求发送数据的方法。
最后,服务器只发送一个JSON格式的字符串,另一方面,你必须再次解析(JSON.parse()
),以便有一个表示数据发送的对象。
添加:JSON.stringify()
是另一个方向的操作。用JavaScript对象创建一个字符串。
关于编辑:
正如评论中所述,这不会创建有效的JSON(请查看@ json.org以获取概述)。
所以现在你有了一些选择:
使用GSON等库对您的数据进行编码。
在JavaScript中手动解析数据。 (我不推荐这个。)
手动创建有效的JSON字符串。
第三个选项的代码可能如下所示:
// start the JSON object
out.print( "{" );
//Name Cell
out.println( "\"empName\":\"" + empName + "\"," );
// start an array for the next few values
out.print( "\"hours\": [" );
out.print(hoursArr[0] + "," );
out.print(hoursArr[1] + "," );
out.print(hoursArr[2] + "," );
out.print(hoursArr[3] + "," );
out.print(hoursArr[4] + "," );
// end the array
out.print( "]," );
//Total hours Cell
out.print( "\"PTOAmt\":\"" + PTOAmt + "\"");
// end the JSON
out.print( "}" );
这假设PTOAmt
也是一个字符串。
从长远来看,您应该使用选项(1)中提到的库来处理编码。