2011-09-26 11 views
6

Questa è la prima volta che lavoro con JSON. Sto cercando di tornare JSON dal mio metodo di azione:Risultato Json avvolto nel tag pre - come ottenerne il valore

public JsonResult Upload() 
{ 
    ... 
    return Json(new { foo = "sos....sos....sos..."}); 
} 

Ma in seguito tutto quello che ottiene è il mio involucro messaggio in questo tag "pre". Come analizzare "foo" da questo?

"<pre style="word-wrap: break-word; white-space: pre-wrap;">{"foo":"sos....sos....sos..."}</pre>" 

risposta

13

Penso che il motivo si sta ricevendo i dati avvolto in un tag pre è perché si richiede i dati come HTML e non solo testo o JSON.

Provare a specificare il tipo di dati come json per interrompere la risposta convertita in HTML.

+0

Sto usando l'intestazione '(Content-Type: application/json ')' in PHP su Chrome. Sembra che l'output sia racchiuso in un pre con una scheda aggiunta nonostante l'intestazione. –

+0

Penso che @Fenchurch risponda meglio a questa domanda, che non è come evitare il tag 'pre', ma come ottenere il suo contenuto. – ProfK

+0

@ProfK Questa è una risposta molto migliore, OP non vuole il tag 'pre' .. stanno solo chiedendo come analizzare il foo perché non sanno che possono evitarlo. Perché convertire da json in html e poi tornare a json? – Arth

3

Restituisce il contenuto del primo tag pre con la classe "yourclass".

document.querySelector("pre.yourclass").innerHTML 
0

È possibile che il gestore sul lato client stia cercando di garantire che la risposta del server sia un HTML ben formato. Credo che alcune librerie javascript con supporto per il caricamento dei file avvolgeranno i tag non HTML nel tag come descrivi. Una soluzione molto poco intuitiva potrebbe essere quella di impostare il mimetype sul server come "text/html", in modo che il gestore di ajax non tenti di avvolgere la risposta.

Problemi correlati