将一个数组从Java(JSP)传递给jQuery

Passing an array from Java (JSP) to jQuery

本文关键字:JSP jQuery Java 数组 一个      更新时间:2023-09-26

我知道如何在用Java编写的程序中使用$.each像这个

$.each( ['a','b','c'], function(i, l){ 
   alert( "Index #" + i + ": " + l ); 
 });

如果我想把arraylist或字符串数组从我的java程序传递给JQuery,谁知道怎么做呢??

我写了

String[] arr1=new String[2];
arr1[1]="whatever";
arr1[2]="ksj";
$.each( arr1, function(i, l){ 
   alert( "Index #" + i + ": " + l );
 }

但它不起作用?


更新::我有一个jsp页面,其中包含java的一部分,如下所示:

<%@page import="java.lang.reflect.Array"%>
<%@page import="java.util.ArrayList"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
        <style>
            .highlight { background-color: yellow }
        </style>
    </head>
    <body>
        <h1>Hello World!</h1>
        <%  ArrayList wordslist = new ArrayList();
      wordslist.add("Hello");
      wordslist.add("again");
     String[] arr1=new String[wordslist.size()];
      for (int i=0; i<wordslist.size();i++)
      {
     arr1[i]=wordslist.get(i).toString();
        }%>

        <a href="http://jquery.com/">jQuery</a>
        <p> Hello again and again</p>
          <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
       <script src="jquery.highlight-3.js"></script>
       <script>
        $(document).ready(function(){
       alert( arr1 );     
      var arr=new Array();
      arr.
$.each( arr, function(i, l){ 
   alert( "Index #" + i + ": " + l );
 }
)

     });
       </script> 
    </body>
</html>

问题是wordslist arry是动态的,我想把它传递给JQuery??我如何在不使用内联嵌入式java的情况下做到这一点请帮助有没有方法将wordslist传递到Jquery中的arr数组!!!这真的让我很失望!!

使用Java的JSON库。然后将ArrayList序列化为JSON:

ArrayList wordslist = new ArrayList();
wordslist.add("Hello");
wordslist.add("again");
String json = (new JSONArray(wordslist)).toString();

在JavaScript代码的适当位置回显JSON文本。例如

$(document).ready(function(){    
    var arr = <%= json %>;
    $.each( arr, function(i, l){ 
        alert( "Index #" + i + ": " + l );
    });
});

实际上,我不确定这是否是打印变量的正确JSP语法。如果没有,请更正。

首先,您的代码格式错误。你错过了最后一点。其次,索引是以零为基础的。第三,您创建的数组错误。

var arr1 = new Array();
arr1[0]="whatever";
arr1[1]="ksj";
$.each( arr1, function(i, l){ 
   alert( "Index #" + i + ": " + l );
}); //Missed the );

总的来说,我建议在使用jQuery时编写JavaScript而不是Java。只是一个提示。:)

Javascript变量没有用类型声明,并且不能要求String数组,因为Javascript只有一种数组,它可以容纳任何东西。此外,确保你的括号平衡。最后,Javascript中的数组索引从0开始,就像在大多数其他编程语言中一样(包括Java,你似乎对它感到困惑——但Java和Javascript彼此无关,尽管它们有名字)。

var arr1 = [];
arr1[0]="whatever";
arr1[1]="ksj";
$.each( arr1, function(i, l){ 
   alert( "Index #" + i + ": " + l );
});