2013-10-30 49 views
0

我試圖將java數組轉換爲js數組。但它會給出錯誤,因爲「k不能解析爲變量」.x.getrows返回數組。將java數組轉換爲javascript數組時出錯

<% MySQLAccess x=new MySQLAccess();%> 
    <% String b[]=x.getRows();%> 
    var message="<%out.print(b[0]);%>" 
    console.log(message) 
    var data=new Array(); 
     <% for(int k=0;k<b.length ;k++) %> 
     <% {%> 

      var temp=<%= b[k] %> 
      data[<% =k %>]=temp;  
     <%}%> 
+0

不要像這樣混合java和javascript ..我希望你知道它真的很糟糕的代碼。 –

+0

不是'data'行'%'字符和'='之間的空格[<% =k %>] = temp;'錯誤? – MadConan

+0

我解決了它。那麼同樣的錯誤 – user2815407

回答

0

我的建議來解決這個代碼:忘掉它:

  • 你不應該使用小腳本中的JSP
  • JS字符串文字需要他們周圍的報價,並且逃脫了報價和其他的轉義特殊字符裏面
  • JSON是你應該使用的工具。

所以,在你的控制器,使用

request.setAttribute("jsArray", someJsonSerializer.toJson(javaArray)); 

而在你的JSP:

var data = ${jsArray}; 
+0

控制器意味着我的MysqlAccess Java程序。 – user2815407

+0

否。控制器是模型 - 視圖 - 控制器體系結構中的控制器。例如,閱讀http://www.java-samples.com/showtutorial.php?tutorialid=350。 –

1

@ user2815407您在字符​​串數組中接收哪些?可能是類似於[str1,str2,str3]。如果是這樣,你可以很容易地將這個字符串數組轉換成js數組

var values = []; 
values = //Your_string_array 
//Iterate through each value 
$.each(values, function(index, value) { 
    console.log(value); 
}); 

看到這個fiddle。這可能不是將java轉換爲js數組的最佳方式。希望這會給你一些想法。讓我知道這是否有幫助。

1

我建議不要使用scriplets,但這裏的問題的解決方案:

<% String b[] = new String[]{"10", "20", "30"};%> 
      var message = "<%out.print(b[0]);%>" 
      console.log(message) 
      var data = new Array(); 
      <% for(int k=0;k<b.length;k++){%> 
      var temp =<%=b[k]%> 
      data[<%=k%>] = temp; 
      <%}%> 

錯誤只是非必要的空間。