2013-03-25 56 views
6

我想使用HTTP請求發佈JSON數據。我已閱讀官方docs,我正在根據他們工作。我使用下面的代碼:發佈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); 

如果這是張貼JSON數據的正確方法。我將如何檢查數據張貼?該網址是否包含發佈的數據?

我在onload事件中添加的以下警報中收到了空值。

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

我正在使用Windows 7,測試Android 4.2.2 ....在此先感謝。

回答

0

使用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, 
    }) 

併發送。它可能會工作...

+1

不,這只是給我錯誤:未定義的對象。 – 2013-03-28 07:58:53

9

當您將Content-Type設置爲json時,您需要將輸入串聯起來。

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

試過這個,它的工作,無法在文檔中找到它。

+0

我一直在努力解決同樣的問題,謝謝你的回答。我不知道這樣的東西沒有被記錄下來...... – Damian 2014-05-23 18:17:00

1

只需使用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, })

docs更新。