2013-03-25 87 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更新。