我从jsp到servlet进行了ajax调用。当我想要返回字符串然后它工作正常。但我想将响应作为String数组发送然后它不起作用。我是否有可能从servlet发送字符串数组作为ajax响应。
String[] roleAccess=null;
response.setContentType("text/html");
try{
roleAccess=new String[23];
roleAccess[0]="";
roleAccess[1]="checked";
roleAccess[2]="";
response.getWriter().write(roleAccess.toString());---this part I need to change.
答案 0 :(得分:0)
将其写入JSON。 Javascript无法理解Java数组的toString()方法([Ljava.lang.String;@5527f4f9
)的结果,但我知道它可以理解JSON。
如果您只是要使用字符串数组而又不想再使用任何库:
public static String toJSON(String[] array)
{
String json = "[\"";
for (String s : array)
{
json += s + "\",\"";
}
return json.substring(0, json.length() - 2) + "]";
}
根据您在客户端使用的Javascript框架,您的JSON将以xmlHttpRequestObject.responseText
的形式提供。 AngularJS将其存储在$http.get().success
方法的第一个data
参数中。 jQuery将它存储在$.ajax({success})
方法的第一个data
参数中。 Angular和jQuery为您自动验证并eval
为[object Object]
,但xmlHttpRequestObject.responseText
没有。
答案 1 :(得分:0)
通过在json中编码数组并以json格式发送ajax响应并返回它。
您可以使用Gson然后对数组进行编码,如:
String jsonRoleAccess = new Gson().toJson(roleAccess, roleAccess.class);
response.getWriter().write(jsonRoleAccess);
// OR do a one liner:
response.getWriter().write(new Gson().toJson(roleAccess, roleAccess.class));
在Javascript端,您可以将其作为json对象访问
// Assuming you've read the ajax response into var roleAccess
var checked = roleAccess[1];
答案 2 :(得分:0)
您希望将数组编组为JSON数据类型。 Java的数组类返回的格式不是JavaScript理解的格式。
您还应该将数组包装在Object中,因为将顶级数组作为JSON传递回来会出现安全问题。