2010-06-13 88 views
10

我正在使用ajax后,正在接收html格式的数据。我需要拆分数据,并在整个页面上放置部分数据。我建立了我的回复数据,就像<p id='greeting'> Hello there and Welcome </p> <p id='something'>First timer visiting our site eh'</p>这有点复杂和动态,但我可以弄清楚,如果得到这个问题的答案。由于使用jQuery ajax响应数据

$.ajax({ 
      type:'POST', 
      url: 'confirm.php', 
      data: "really=yes&sure=yes", 
      success:function(data){ 
        //Need to split data here 
      } 
     }); 

回答

6

更新:刚刚意识到你应该这样做:

success:function(data) { 
    data = $('<div/>').append(data); 
    $('#greeting',data).appendTo('#one') 
    $('#something',data).appendTo('#two') 
} 

正如你不能使用.find正确,因为它不是一个孩子,但如果你把它添加到一个空的节点就可以了。另一种方法是使用.filter

$.ajax({ 
      type:'POST', 
      url: 'confirm.php', 
      data: "really=yes&sure=yes", 
      success:function(data){ 
        $('#greeting',data).appendTo('#one') 
        $('#something',data).appendTo('#two') 
      } 
     }); 

您可以从data提取和追加要。你也可以做一些像返回JSON的东西,而不是从html中提取html,而是从一个对象中访问html。

$(data.greeting).appendTo('#one') 
$(data.something).appendTo('#two') 

的反应必须是这样的:

({ 'greeting':'html', 'something' :'other html' }) 
+0

感谢您的回复,但由于某种原因,我不能只通过ID抓住一个标签。如果它有效,我抓住整个字符串。 – Theopile 2010-06-13 05:06:29

+0

警报(数据)警报是什么? – 2010-06-13 05:07:13

+0

您能否详细说明JSON解决方案? – Theopile 2010-06-13 05:07:21

-2

(如果您熟悉JSON梅德的反应会工作,但正则表达式可能是更容易一些,将工作一样好这个)

您可能需要使用正则表达式分解响应文本。例如,如果响应文本是:

<p id='greeting'> Hello there and Welcome </p> 
<p id='something'>First timer visiting our site eh'</p> 

那么你可以使用一些JavaScript这样的:

var greeting = response_text.match(/<p id='greeting'>.*</p>/); 
var something = response_text.match(/<p id='something'>.*</p>); 

(这个网站是伟大的学习正则表达式:http://gskinner.com/RegExr/

+1

1.我的答案不是特定于JSON,JSON是另一个提示2.您应该*从不*使用正则表达式来解析html。只是时间问题之前,它很容易失败 - jQuery内部解析和抓取DOM方法,这是你应该做的 – 2010-06-13 04:37:13

+2

看看Coding Horror的正则表达式和HTML: http://www.codinghorror.com /blog/2009/11/parsing-html-the-cthulhu-way.html 正如他们所说,正则表达式和html是一个坏主意,但并非总是如此。例如,如果您在用户登录后向一些地方插入欢迎消息(例如,“欢迎,Theopile”),那么看起来好像几条正则表达式就不是那么重要。 对于OP - 如果你有比你的例子复杂得多的东西,或者AJAX响应的任何部分是由用户决定的,那么Meder是完全正确的。 – Computerish 2010-06-13 13:58:54

+0

此外,由于某些原因,我无法为Meder的解决方案添加评论,但如果您使用的是PHP,本网站有一个很好的使用JSON的示例: http://www.extjs.com/learn/Tutorial: Creating_JSON_Data_in_PHP – Computerish 2010-06-13 14:01:07

0

为什么请不要将confirm.php中的答案与|字符串在一起,然后当字符串作为变量数据返回时,您可以将它与datas = data.split("|")分开并使用访问各个答案,等