2010-06-13 26 views
10

Używam ajax post i odbieram dane w postaci html. Muszę podzielić dane i umieścić fragmenty danych na całej stronie. Zbudowałem swoje dane z odpowiedzi, aby być czymś w rodzaju <p id='greeting'> Hello there and Welcome </p> <p id='something'>First timer visiting our site eh'</p> Jest to trochę bardziej skomplikowane i dynamiczne, ale mogę to zrozumieć, jeśli otrzymam odpowiedź na to pytanie. DziękiKorzystanie z danych odpowiedzi ajax jQuery

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

Odpowiedz

6

Aktualizacja: Wystarczy sobie sprawę powinieneś to zrobić:

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

Jak mogę użyć .find prawidłowo ponieważ isnt dziecko, ale jeśli dołączyć go do pustego węzła można. Drugą alternatywą byłoby korzystania .filter

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

Można wyodrębnić z data i dołączania gdzie chcesz. Możesz też zrobić coś takiego, jak zamiast tego zwracać JSON, a zamiast wydobywać html z html, wystarczy uzyskać dostęp do html z obiektu.

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

Odpowiedź musiałaby być tak:

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

Dzięki za odpowiedź, ale z jakiegoś powodu nie mogę po prostu pobrać jednego tagu za pośrednictwem id. Jeśli to działa, łapię cały ciąg. – Theopile

+0

Co robi alert (dane)? –

+0

Czy mógłbyś rozwinąć rozwiązanie JSON? – Theopile

-2

(odpowiedź Meder będzie działać, jeśli są wygodne z JSON, ale wyrażenia regularne są prawdopodobnie nieco łatwiejsze i będzie działać równie dobrze za to .)

Prawdopodobnie będziesz musiał podzielić tekst odpowiedzi za pomocą wyrażeń regularnych. Na przykład, jeśli tekst odpowiedź brzmi:

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

Następnie można korzystać z niektórych JavaScript tak:

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

(Ta strona jest świetna do nauki o wyrażeniach regularnych: http://gskinner.com/RegExr/)

+1

1. Moja odpowiedź nie jest specyficzna dla JSON, JSON był alternatywną wskazówką 2. Powinieneś * nigdy * używać wyrażeń regularnych do parsowania html. Tylko kwestia czasu, zanim będzie podatna na niepowodzenie - jQuery wewnętrznie parsuje i chwyta za pomocą metod DOM, co powinieneś robić. –

+2

Zobacz, jak działa kodowanie i wyrażenie HTML w Horror Horror: http://www.codinghorror.com /blog/2009/11/parsing-html-the-cthulhu-way.html Jak powiedzielibyśmy, regex i html to zły pomysł, ale nie zawsze. Na przykład, jeśli właśnie wstawiłeś wiadomość powitalną w kilka miejsc po zalogowaniu użytkownika (na przykład "Witamy, Theopile"), to nie wydaje się, że kilka linii regex jest tak wielką zbrodnią. Do OP - Jeśli masz coś znacznie bardziej skomplikowanego niż przykład, lub jeśli jakakolwiek część odpowiedzi AJAX jest określona przez użytkownika, Meder ma całkowitą rację. – Computerish

+0

Z jakiegoś powodu nie mogę dodać komentarza do rozwiązania Medera, ale jeśli używasz PHP, ta strona ma świetny przykład użycia JSON: http://www.extjs.com/learn/Tutorial: Creating_JSON_Data_in_PHP – Computerish

0

Dlaczego nie mieszaj razem odpowiedzi w ramach confirm.php ze znakiem |, a kiedy łańcuch zostanie zwrócony jako dane zmienne, możesz podzielić je na datas = data.split("|") i uzyskać dostęp do poszczególnych odpowiedzi za pomocą data[0], , itp.

Powiązane problemy