我在struts 1.3中工作,我正在将json对象构建为javascript并将JSON对象传递给我的struts动作类,但是当我收到json时,它在这里传入null是我的示例代码
var dataobj=[{code:c1,name:n1}];
$.ajax({
type: "POST",
url: "addtier.do",
dataType: "json"
data: "data?="+dataobj;
});
动作类代码
JSONObject jObj = new JSONObject();
JSONObject newObj = jObj.getJSONObject(request.getParameter("data"));
Enumeration eNames = newObj.keys(); //gets all the keys
while(eNames.hasNextElement())
{
// Here I need to retrieve the values of the JSON string
// and add it to the session
}
这一行是空的
request.getParameter("data");
并在解析时提供异常
JSONObject newObj = jObj.getJSONObject(request.getParameter("data"));
实际上我做错了什么。我不明白 是我的json数据是错误的格式或其他东西 任何暗示都会给我很大的帮助
答案 0 :(得分:0)
var dataobj=[{code:c1,name:n1}];
$.ajax({
type: "POST",
url: "addtier.do",
dataType: "json"
data: dataobj;
});
好像您要将数据参数设置为data?=[Object]
。
试试console.log('data?='+dataobj);
,你会看到我的意思。
如果您应该为其提供字符串而不是jaon对象,那么您首先需要JSON.stringify(dataobj)
。
另一个问题是它可能需要发送一个json对象而不是一个json数组,所以它仍然无法正常工作尝试确保dataobj是:{data:[{key:"val",key2:"val2"}]}
答案 1 :(得分:0)
你可以用这个:
String jsonData = request.getReader().readLine();
而不是:
String jsonData = request.getParameter("data");
注意:在Javascript中使用POST发送(jsonData)