2013-03-25 13 views
6

Desidero registrare i dati JSON utilizzando la richiesta HTTP. Ho letto l'ufficiale docs e sto lavorando in base a loro. Sto usando il seguente codice:Problema con dati POST JSON Titanium

var xhrpost = Ti.Network.createHTTPClient(); 

    xhrpost.onload = function(){ 
     activityIndicator.hide(); 
     alert('Posted successfully'); 
     alert(JSON.stringify(this.responseText)); 
    } 

    var posturl = 'http://qudova.com/api.php'; 

    xhrpost.open('POST', posturl); 
    xhrpost.setRequestHeader("Content-Type", "application/json"); 
    xhrpost.setRequestHeader('charset','utf-8'); 
     var params = { 
     ProjectID : picked_prj, 
     RoleID : picked_rol, 
     FirstName: first.value, 
     LastName: last.value, 
     Phone: phone.value, 
     Email: email.value, 
     City: city.value, 
     State: stat_drp.getSelectedRow(0).title, 
     Zip: zip.value, 
     Notes: notes.value, 
    }; 
    xhrpost.send(params); 

Se questo è il modo corretto di pubblicare i dati JSON. Come dovrei controllare che i dati vengano pubblicati ?? L'url contiene i dati inviati ??

Si ottiene null nel seguente avviso che ho aggiunto nell'evento onload.

Sto lavorando su Windows 7, Test su Android 4.2.2 .... Grazie in anticipo.

risposta

0

uso JSON.parse

var params =JSON.parse({ 
     ProjectID : picked_prj, 
     RoleID : picked_rol, 
     FirstName: first.value, 
     LastName: last.value, 
     Phone: phone.value, 
     Email: email.value, 
     City: city.value, 
     State: stat_drp.getSelectedRow(0).title, 
     Zip: zip.value, 
     Notes: notes.value, 
    }) 

e inviarlo. Può funzionare ...

+1

No, questo mi dà solo un errore: oggetto non definito. –

9

Quando si imposta Content-Type su json, è necessario stringificare l'input.

var xhr = Ti.Network.createHTTPClient(); 

xhr.open('POST', url); 
xhr.setRequestHeader("Content-Type", "application/json"); 
xhr.setRequestHeader('charset','utf-8'); 
xhr.send(JSON.stringify({ 
    prop: 'string', 
    data: { 
     embeddedProp: 1234 
    } 
})); 

Ho provato questo e ha funzionato, non è stato in grado di trovarlo nella documentazione.

+0

Ho lottato con lo stesso problema, grazie per la risposta. Non capisco come mai cose del genere non siano documentate ... – Damian

1

Basta usare JSON.stringify()

JSON.stringify({ ProjectID : picked_prj, RoleID : picked_rol, FirstName: first.value, LastName: last.value,
Phone: phone.value, Email: email.value, City: city.value, State: stat_drp.getSelectedRow(0).title, Zip: zip.value, Notes: notes.value, })

Vedi docs aggiornati.