2009-03-17 9 views

Odpowiedz

14

Alternatywnym rozwiązaniem byłoby po prostu zwrócenie kodu HTML i użycie jQuery's load():

$('#someDiv').load('servershtml.html'); 

zrobić to na swój sposób, choć, musisz tylko uciec cudzysłowów i ukośników.

Model specification jest bardzo czytelny i krótki.

7

Wystarczy tylko dodać ukośniki do cytatów i ukośniki (ala \”i \\) podczas ucieczki zawartość być umieszczone na ciąg JSON HTML. znaki nic nie znaczą w ciągu JSON, więc są w porządku :)

Oczywiście, upewnij się, że Twój ciąg jest sam w sobie dobrze sformatowany (X) HTML, aby nie eksplodować po wstawieniu do elementu div.

+0

co z \ a \ b \ c, wszystko jest w porządku? – Blankman

1

Jeśli ustawisz dataTypeconfiguration option na 'json', wówczas obiekt przekazany do zdarzenia complete będzie obiektem javascript. Zasadniczo, jQuery wykona pracę polegającą na przekonwertowaniu treści odpowiedzi (zakładając, że jest odpowiednio sformatowany JSON) do obiektu javascript. Przykład ...

$.ajax({ 
    dataType: 'json', 
    complete: function(myJsonObject) { 
     alert(myJsonObject.someMember); 
    } 
}); //$.ajax({ 

Jeśli zastanawiasz się, jak generować prawidłowo sformatowany JSON z .NET, następnie chciałbym zachęcić was do odkrywania Json.NET ponieważ sprawia generowania JSON bardzo, bardzo proste.

6

Podczas tworzenia JSON z HTML trzeba ucieczki następnie dwukrotnie cytując charakteru i także charakter CLRF i powróci HTML grzywny.

Pracowałem z pl/sql w procedurze Oracle, która została wywołana z żądania AJAX. Jeśli chcesz, mogę opublikować implementację.

Powinieneś przetestować swoją wydajność pod numerem http://www.jsonlint.com/, aby sprawdzić, czy jest prawidłowy.

Więc

{ 
    "id": "1", 
    "html_value": "<a href=\"http://www.google.com\">test link returnin html code</a>" 
} 

jest rozróżnianie od

{ 
    "id": "1", 
    "html_value": "<a href=\"http://www.google.com\">test link returnin 
html code</a>" 
} 

ze względu na charakter CLRF. Powinieneś zamienić to po stronie serwera na &nbsp; lub <br/>.

Nadzieja to pomaga, Alex

1

Jeśli używasz PHP json_encode robi trick dla Ciebie:

$htmlSnippet = '<a href="#"></foo>'; 
return json_encode(array("html" => $htmlSnippet)); 

w jQuery to albo zadeklarować typ danych 'json' (patrz odpowiedź wyżej) lub dekodowanie przez jQuery.parseJSON

5

Opublikuję swoje doświadczenia z PHP. Mam nadzieję, że to pomoże.

Zwykle jeden użyć funkcji json_encode() do kodowania danych, np:

json_encode(array('data1' => 'String data with text', 
       'data2' => '<a href="www.stackoverflow.com">The Site</a>')); 

Od json_encode() działa dobrze tylko z UTF-8 ciągi, proponuję, aby zakodować każdy ciąg znaków w UTF-8 poprzez funkcję utf8_encode() tj

json_encode(array(utf8_encode('data1') => utf8_encode('String data with text'), 
       utf8_encode('data2') => utf8_encode('<a href="www.stackoverflow.com">The Site</a>'))); 

Ponadto, jeśli używasz znaków specjalnych (jak è i wyborem włoskich słów), Proponuję odszyfrować zwrócony kod HTML zakodowany w UTF8. Jest to szczególnie przydatne, jeśli musisz użyć go na stronie HTML (np. W wyniku połączenia AJAX). Do dekodowania przez JavaScript, użyj:

decodeURIComponent(escape(html)); 

gdzie html jest zwrócony zakodowany kod HTML.

Pozdrawiam.