2012-06-18 38 views
0

jQuery的看起来像这样我怎么循环在我的JSP响应使用jQuery

$.post('JSP/processForm.jsp', $("#Form").serialize(), 
      function(data){ 
      //I want to iterate through every line in the data object returned here. 

    }); 

我搜索并尝试:

$.each($(data), function(key, value) { 
     alert(value); 
}); 

但没有奏效。我明白,首先需要将响应编码到jQuery对象中。

$(data) 

但我似乎无法找到一种方法来遍历每一行。 JSP代码很简单:

out.println("Test"); 
out.println("Test Email"); 
out.println("Test CellPhone"); 
out.println("305-777-5587"); 
+1

你的JavaScript代码将只会得到一个文本blob;一个字符串,即。你的JSP代码没有做任何事情来使它被组织为其他任何东西。 – Pointy

+0

是的,我意识到这一点。另一种方法是使用JSON将数据编码为数组结构,这将允许我遍历它,但我只是想知道是否有一种方法可以做到这一点,而不必使用JSON。 – Shile

+0

尝试'alert(data)'检查响应字符串,'println'应该至少在每行的末尾添加一个'\ n'字符。你可以['split'](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/split)'data'并迭代它。 –

回答

1

有几件事情需要注意:

  • 你的JSP很可能被渲染,并与表明它的HTML内容的标头中返回。你(有点任意)决定每一行新文本代表一个新的数据。
  • jQuery每个文档都显示它只适用于集合,所以包装对象的jQuery不是必需的。 (http://api.jquery.com/jQuery.each/)但是,jQuery没有方法将你返回的HTML解析为一个javascript集合对象。
  • 如果你真的想要结束一个JavaScript结构化的数据对象,你可以考虑发送你的输出为JSON(javascript对象表示法)。从我所看到的情况来看,在这种情况下似乎更合适。

如果您确实想要继续这种方式,您需要编写一些JavaScript来将您的响应html分隔为新行。它可能看起来像这样(你可能需要玩它)

var myData = data.split(/\r\n|\r|\n/); 
+0

我的工作很糟糕,我犯了一个愚蠢的错误。非常感谢! – Shile