我有一组以下代码来获取数组中的表数据,并通过ajax调用将其传递给servlet。但是我变得无效了。请有人帮我解决我的错误/如何获取所需的数据,因为我是这个servlet和web应用程序的新手。到目前为止,我尝试了SO中给出的一些例子。但我无法得到我的预期数据。
var myTableArray = [];
$("table#itemtable tr").each(function() {
var arrayOfThisRow = [];
var tableData = $(this).find('td');
if (tableData.length > 0) {
tableData.each(function() { arrayOfThisRow.push($(this).text()); });
myTableArray.push(arrayOfThisRow);
}
});
alert(myTableArray);
$.ajax({
url:"insertmasteritem",
type:"POST",
dataType:'json',
data: {json:myTableArray},
success:function(data){
// codes....
},
});
Servlet代码
String[] myJsonData = request.getParameterValues("json[]");
System.out.println("myJsonData.length"+myJsonData.length);
for (int i = 0; i < myJsonData.length; i++) {
String[] innerArray=myJsonData[i].split(",");
System.out.println(myJsonData[i]);
}
答案 0 :(得分:0)
像这样发送您的Json数据
$.ajax({
url:"insertmasteritem",
type:"POST",
dataType:'json',
data:myTableArray,
success:function(data){
// codes....
},
});
和在Servlet类中
JSONObject jsonObj= new JSONObject(request.getParameter("myTableArray"));
Iterator it = jsonObj.keys();
while(it.hasNext())
{
String jsonKey = (String)it.next();
String jsonValue = jsonObj.getString(jsonKey);
System.out.println(jsonKey + " --> " + jsonValue );
}
答案 1 :(得分:0)
好吧,你需要将一个格式正确的JSON对象(作为字符串)发送到servlet。可能最简单的方法是创建一些javascript对象并用这些对象填充数组。然后应该是数组数据 转换为JSON字符串(使用JSON.stringify)。我要硬编码对象值(但你会从你的表中得到它们)
Javascript代码
function generateJson(){
var myObjArr = [];
//you will typically have just one object (e.g. myObj, which you will fill in your ajax table loop
//myObj.v1 = v1_val;
//myObj.v2 = v2_val;
...
//myObjArr[i] = myObj; //
myObj1 = { "v1": "Orange", "v2": "ABC", "v3":10,"v4":"OK" };
myObj2 = { "v1": "Apple", "v2": "XYZ", "v3":25,"v4":"OK" };
myObjArr[0] = myObj1;
myObjArr[1] = myObj2;
var jsonObjStr = JSON.stringify(myObjArr);
//you can now use jsonObjStr to send your data to the servlet
// document.getElementById("json").innerHTML = jsonObjStr;//this is just added for testing purposes
}
生成的JSON
[{"v1":"Orange","v2":"ABC","v3":10,"v4":"OK"},{"v1":"Apple","v2":"XYZ","v3":25,"v4":"OK"}]
如您所见,json字符串以[(表示数组)开头。您可能必须将此更改为以{(和with}}开头,具体取决于JSON解析器的工作方式({}表示对象)。
对于servlet部分,它取决于您正在使用的实际JSON解析器。尝试使用其他人提供的一些建议。我可以使用Jackson提供一些代码,但是您必须将Jackson库添加到类路径中。
答案 2 :(得分:-2)
为什么要将参数值作为JSON []
获取String[] myJsonData = request.getParameterValues("json[]");