2010-06-13 47 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("|")分開並使用訪問各個答案,等