2013-03-25 10 views
6

Chcę opublikować dane JSON za pomocą żądania HTTP. Przeczytałem oficjalną docs i pracuję zgodnie z nimi. Korzystam z następującego kodu:Problem z danymi 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); 

Jeśli jest to właściwy sposób publikowania danych JSON. Jak sprawdzić, czy dane zostały opublikowane? Czy adres URL będzie zawierał opublikowane dane?

Otrzymuję null w następującym ostrzeżeniu, które dodałem w zdarzeniu onload.

alert(JSON.stringify(this.responseText)); 

pracuję na Windows 7, Android 4.2.2 Testowanie .... Dzięki z góry.

Odpowiedz

0

użycie 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, 
    }) 

i wysłać. To może zadziałać ...

+1

Nie, to tylko daje mi błąd: niezdefiniowany obiekt. –

9

Po ustawieniu Content-Type na json, musisz usztywnić wejście.

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

Tried to uwagę i to działało, nie było w stanie go znaleźć w dokumentacji.

+0

Zmagałem się z tym samym problemem, dziękuję ci za odpowiedź. Nie podaję się, jak to się stało, że takie rzeczy nie są udokumentowane ... – Damian

1

Wystarczy użyć 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, })

Zobacz docs aktualizowana.