POST JSON数据Titanium的问题

时间:2013-03-25 16:42:57

标签: json post titanium-mobile

我想使用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上进行测试....先谢谢。

3 个答案:

答案 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,
    })

并发送。它可能有用......