2010-06-13 23 views
10

ajax yayınını kullanıyorum ve verileri html biçiminde alıyorum. Verileri bölmem ve verilerin tüm bölümlerini sayfanın üzerine koymam gerekiyor. Yanıt verimi <p id='greeting'> Hello there and Welcome </p> <p id='something'>First timer visiting our site eh'</p> gibi bir şey olarak oluşturdum. Biraz daha karmaşık ve dinamik ama bu soruyu cevaplandırırsam çözebilirim. Eğer bir çocuk isnt düzgün beri .find cant'kullanma gibijQuery ajax yanıt verisini kullanma

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

ama boş bir düğüme ekler eğer şunları yapabilirsiniz: Teşekkür

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

cevap

6

Güncelleme: Sadece muhtemelen bu yapmalıyım fark etti. diğer alternatif .filter

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

Sen data özü ve istediğiniz yere ekleyebilirsiniz kullanarak olacaktır. Bunun yerine, dönüş JSON gibi bir şey yapabilirsiniz ve html html ayıklamak yerine bir nesnedeki html'ye erişebilirsiniz.

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

tepki gibi olması gerekir:

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

Cevabınız için teşekkürler, ancak bir nedenden ötürü, kimliğiyle yalnızca bir etiket alamıyorum. Çalışırsa, tüm dizeyi yakalarım. – Theopile

+0

Uyarı (veri) uyarısı nedir? –

+0

JSON çözümü hakkında ayrıntılı bilgi verir misiniz? – Theopile

-2

(Eğer JSON ile rahat ise Meder tepkisi çalışacaktır ancak düzenli ifadeler muhtemelen biraz daha kolaydır ve bu sadece için de çalışacak .) Yanıt metnini normal ifadeleri kullanarak ayırmanız gerekecektir. Örneğin, yanıt metni ise:

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

Sonra böyle bazı JavaScript kullanabilirsiniz:

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

(Bu site düzenli ifadeler hakkında bilgi edinmek için harika: http://gskinner.com/RegExr/)

+1

1. Cevabım JSON'a özgü değil, JSON alternatif bir ipucudur 2. html'yi ayrıştırmak için * asla * normal ifadeleri kullanmamalısınız. Başarısızlık eğilimli önce sadece bir zaman meselesi - jQuery iç yapabilmeniz ve yapmalısınız ne olduğunu DOM yöntemleri ile kapmak –

+2

Kodlama Horror'ın regex ve HTML üzerinde bir göz atın: http://www.codinghorror.com /blog/2009/11/parsing-html-the-cthulhu-way.html Söylendiği gibi, regex ve html kötü bir fikirdir, ancak her zaman değil. Örneğin, kullanıcı giriş yaptıktan sonra birkaç yere bir hoşgeldin mesajı ekliyor olsaydınız (örneğin, "Hoşgeldin, Teori"), o zaman birkaç satırlık regex gibi büyük bir suç gibi görünmez. OP'ye - Örneğinizden çok daha karmaşık bir şeyiniz varsa veya AJAX yanıtının herhangi bir kısmı kullanıcı tarafından belirlenirse, Meder tamamen haklıdır. – Computerish

+0

Ayrıca, bazı nedenlerden dolayı Meder'in çözümüne yorum ekleyemiyorum, ancak PHP kullanıyorsanız, bu sitenin JSON: http://www.extjs.com/learn/Tutorial'ı kullanmanın harika bir örneği var: Creating_JSON_Data_in_PHP – Computerish

0

Neden Cevapları confirm.php içinde | karakteriyle birlikte dizemezsiniz, sonra dize değişken veri olarak döndürüldüğünde datas = data.split("|") ile bölebilirsiniz ve bireysel yanıtlaraile erişebilirsiniz, , vb