2013-05-29 10 views
9

Iniziare a lavorare su un progetto che è stato creato completamente su dati JSON. Si ritorna così:Come visualizzare JSON restituito da un post jQuery. Ajax

{"location":{"id":10,"contactPhone":"8675309","contactName":"bob","name":"bill smith","zipCode":"90210","state":"California","address1":"104 S. Olive","city":"Temecula","country":"USA"},"success":true} 

Io sono l'elaborazione dei dati confortevoli restituiti in forma HTML (di solito tabelle) attraversando il DOM con l'.find e altri filtraggio per trovare bandiere di successo. Non ho idea di come farlo con JSON - Devo filtrare sull'ultimo oggetto "successo" e verificare se è vero o falso. Con HTML restituito dati lo faccio in questo modo:

submitHandler: function(form) { 
    $.ajax({ 
    //other ajax stuff 
     success: function(data) { 
     var answer = $(data).find("td:eq(1)").text(); 
     var message = $(data).find("td:eq(3)").text(); 
     //console.log(data); 
     if (answer == "True") { 
      $('#messages').show().html(message); 
     } else { 
      $('#messages').show().html('Error logging in: ' + message); 
     } 
    } 
    }); 
    return false; 
    } 
  1. Anche dopo aver usato questo metodo non del tutto a capire quali sono le funzione (dati) significa, Ive ha usato dati, MSG e la risposta senza capire veramente quale sia la differenza tra loro.

sono in grado di inviare al webservice e ottenere il JSON tornato con questo .ajax chiamare

$.fn.serializeObject = function() {....} 
submitHandler: function(form){ 
    var wrapper = {}; 
    var location = {}; 
    wrapper.location = $("#newLocation").serializeObject(); 
     $.ajax({ 
      type: $(form).attr('method'), 
      url: '/web/service/' + 'locationService' + '/' + 'createLocation', 
      dataType: 'json', 
      async: false, 
      data: JSON.stringify(wrapper), 
      success: function(msg) { 
        console.log('success' + msg); 
        //need to traverse to success and if true, do something 
      }, 
        error: function(msg) { 
        console.log('failure' + msg); 
        //need to traverse to success and if false, do something 
      } 
    }); 
    return false; 
} 
  1. Come si fa a filtrare alla parte "successo" in una stringa JSON (stringa o oggetto)
  2. Quali sono i termini corretti per le coppie/numero chiave (che è anche corretto) nella stringa JSON IE "CONTACTPHONE ':' "
  3. Come si visualizzano i dati se "successo": "vero" - ci lavorerò io stesso ma se qualcuno ha un buon metodo apprezzerei qualche consiglio. Immagino che tu possa semplicemente aggiungere un tavolo in qualche modo?

    Ho un sacco di domande su JSON e sto cercando di formulare le domande in modo generale in modo che l'aiuto che ho ricevuto possa aiutare qualcun altro, mi scuso per la lunghezza di questo post. Apprezzo qualsiasi aiuto e, se richiesto, accorciare/modificare questa domanda.

+1

"e sto cercando di parola alle domande in un modo generale in modo che l'aiuto che mi viene dato possa aiutare qualcun altro "è bello +1 –

risposta

4

msg qui è un oggetto json formattato. È possibile ottenere successo valore del genere:

success: function(msg) { 
        console.log('success' + msg.success); 
        if(msg.success) { //could be wrote: msg.success === true 
         //do some stuff 
        } 
      }, 

"CONTACTPHONE": "8675309"

CONTACTPHONE è la chiave, "8675309" è il valore. Ma nel campione, per ottenere il valore "CONTACTPHONE", è necessario prima ottenere l'oggetto posizione:

var contactPhoneValue = msg.location.contactPhone; 
+0

Quindi è solo cercare la parola" successo "nel msg? Come fai a distinguere tra "successo": "vero" e "successo": "falso"? Inoltre, grazie per aver chiarito la differenza tra chiave/valore. Penso che ciò sarà utile in seguito quando si analizzano i dati e si visualizzano come una tabella, in qualche modo si ignora la "chiave" e si visualizza solo il "valore" –

+1

se (msg.success) se true, se (! Msg.success) se false –

+0

È quasi corretto supporre che si memorizzerebbe una var per ogni chiave/valore come esempio var contactPhoneValue = msg.location.contactPhone; e il fare qualcosa di simile (merda non so come sarebbe una funzione .each?) contactPhoneValue? –

3

JSON (JavaScript Object Notation) è un formato di scambio di dati leggero. È facile per gli umani leggere e scrivere. È facile per le macchine analizzare e generare. http://www.json.org/

Ora il codice per leggere e scrivere le proprietà dell'oggetto json è molto simile come per il normale oggetto javascript.

$ajax({ 
    dataType:'json', 
    success:function(data){ 
     console.log(data['success']); //returns for whatever will be the value for succes 
     //or 
     console.log(data.success); //returns for whatever will be the value for succes 
     data.location['contactName'] = "new name";      
} 
}); 

L'accesso e la manipolazione di oggetti javascript e Json è uguale.
Ecco una guida molto buona per loro:
http://www.dyn-web.com/tutorials/obj_lit.php



aggiornamento:
una versione migliore, forse questo potrebbe aiutare:
http://jsfiddle.net/hvzcg/4/

+0

Grazie, spero che questo abbia più senso dopo aver letto i link che hai fornito. Non sto ancora facendo la connessione su come analizzare la stringa e visualizzare i valori in una tabella –

+0

Modificare la mia risposta su come attraversare l'oggetto ... –

+0

vorresti solo fare gli stessi dati ['contactName'] = "nuovo nome "; per ogni coppia chiave/valore? Se sì, come visualizzeresti il ​​risultato? –