我想使用HTTP请求发布JSON数据。我已经阅读了官方docs,我正按照他们的意愿工作。我使用以下代码:
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事件中添加的以下警告中获取null。
alert(JSON.stringify(this.responseText));
我正在使用Windows 7,在Android 4.2.2上进行测试....先谢谢。
答案 0 :(得分: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
}
}));
尝试了这个并且它有效,但是无法在文档中找到它。
答案 1 :(得分: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已更新。
答案 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,
})
并发送。它可能有用......