2013-04-04 62 views
0

我見過很多類似的問題,但他們沒有提供我的問題的答案。 我的服務器形式的JSON字符串,並把它放進響應:在javascript中處理JSON服務器響應

List<String> list = getSomeList(); 
JSONArray jsArray = new JSONArray(list); 
System.out.println(jsArray); 
response.setContentType("application/json"); 
response.getWriter().write(jsArray.toString()); 

但在我的JavaScript處理函數,當我警覺的反應,它提醒所有的頁面!

function handleResponse(){  
if(http.readyState == 4 && http.status == 200){ 
    var response = http.responseText; 
    if(response){ 
    alert(response); //alert all page! 
    var list = JSON.parse(response.toJSON()); //doesn't work! 
}  
} 

問題:我怎麼能在JavaScript只分離jsArray?

P.S.據我所知,我的JSON.parse(response.toJSON())不起作用,因爲響應包含整個頁面?

+1

是否jsArray.toString()返回JSON對象? – Anoop 2013-04-04 19:23:34

+0

in debug: jsArray - JSONArray jsArray.toString - 「[」Harkiv「,」Kiev「,」Lviv「]」 – 2013-04-04 19:29:47

+0

我不知道java,但是嘗試在編寫jsArray之後關閉響應編寫器。它可能類似於response.getWriter()。close(); 客戶端,JSON.parse()應該足夠了。沒有必要做response.toJSON() – Bart 2013-04-04 19:32:04

回答

1

聲明:我不知道java。

服務器端,問題可能是您的響應在寫入您的JSON數組之後沒有關閉,從而允許寫入其他(html)文本。試試這個:

response.setContentType("application/json"); 
response.getWriter().write(jsArray.toString()); 
response.getWriter().close(); 

客戶端,responseText是一個字符串,並且字符串沒有定義toJSON()函數。

var list = JSON.parse(http.responseText); 

應該就足夠了。