2009-03-17 5 views

risposta

14

Una soluzione alternativa sarebbe semplicemente restituire l'HTML e utilizzaredi jQuery:

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

Per fare a modo tuo, però, si avrebbe bisogno solo di sfuggire doppie virgolette e backslash.

Il specification è molto leggibile e breve.

7

Hai solo bisogno di aggiungere barre con quotazioni e barre (ala \" e \\) quando la fuga di contenuti da mettere in una stringa JSON HTML. caratteri non significano nulla all'interno di una stringa JSON, quindi sono bene :)

Naturalmente, assicurarsi che la stringa è di per sé ben formato (X) HTML in modo che non esploda una volta inserito nel div.

+0

che dire di \ a \ b \ c, ci sono tutti ok? – Blankman

1

Se si imposta la dataTypeconfiguration option-'json' poi l'oggetto passato all'evento complete sarà che JavaScript Object. Fondamentalmente, jQuery farà il lavoro di convertire il contenuto della risposta (assumendo il suo JSON correttamente formattato) in un oggetto javascript. Esempio ...

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

Se vi state chiedendo come generare JSON correttamente formattato da .net, quindi vorrei incoraggiarvi a esplorare Json.NET perché rende la generazione di JSON molto, molto facile.

6

Durante la creazione di JSON con HTML che devono fuga poi doppio apice, e anche il carattere CLRF e tornerà bene HTML.

Ho lavorato con un pl/sql nella procedura di Oracle che è stato chiamato da una richiesta AJAX. Se vuoi, posso postare l'implementazione.

È necessario testare l'output su http://www.jsonlint.com/ per verificare se è valido.

Così

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

è differente da

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

a causa del carattere CLRF. Dovresti sostituirlo sul lato server con &nbsp; oppure <br/>.

Spero che questo aiuti, Alex

1

Se si utilizza PHP json_encode fa il trucco per voi:

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

In jQuery si sia dichiarare il tipo di dati 'json' (vedi risposta precedente) o la decodifica di jQuery.parseJSON

5

Pubblicherò la mia esperienza con PHP. Spero possa aiutare.

solito, si usa la funzione json_encode() per codificare i dati, ad esempio:

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

Dal json_encode() funziona bene solo con stringhe UTF-8, vi suggerisco di codificare ogni corda in UTF-8 attraverso la funzione utf8_encode() , vale a dire

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>'))); 

Inoltre, se si sta utilizzando i caratteri speciali (come e e à a parole italiane), Suggerisco di decodificare il codice HTML restituito UTF8 json restituito. Ciò è particolarmente utile se è necessario utilizzarlo in una pagina HTML (ad es. Come risultato di una chiamata AJAX). Per decodificare attraverso Javascript, utilizzare:

decodeURIComponent(escape(html)); 

dove html è il codice HTML codificato restituito.

Saluti.

Problemi correlati