javascript - JSON 数据发布到 Android/iOS 版 Titanium 中的服务器

标签 javascript titanium titanium-mobile

我正在尝试将 JSON 数据发布到服务器,但提交数据时失败。它给了我错误代码 403。我在 Android 的 ADT 中尝试了这个方法,它有效。它不仅仅适用于钛。

这是我的代码。

function postData() {

    Ti.API.info("JSON Data :" + JSONStringData);

    var url = "http://www.vrsweb.in/hotels/admin/ws/orderItems.php";
    var xhrpost = Titanium.Network.createHTTPClient();

    xhrpost.setTimeout(5000);
    xhrpost.open('POST', url);

    xhrpost.setRequestHeader("Content-Type", "application/json");
    xhrpost.setRequestHeader('charset', 'utf-8');
    xhrpost.setRequestHeader("enctype", "multipart/form-data");

    xhrpost.send(JSONStringData);

    xhrpost.onerror = function(e) {

        Ti.API.debug(e.error);
        if (platform == 'android') {
            var toast = Titanium.UI.createNotification({
                message : 'Cannot Connect to server please check your internet Connection!',
                duration : Titanium.UI.NOTIFICATION_DURATION_SHORT
            });
            toast.show();
        }
        if (platform == 'iphone') {
            alert('Cannot Connect to server please check your internet Connection!');
        }
        Ti.API.info("Status code :" + xhrpost.status);
    };
    xhrpost.onload = function() {
        if (xhr.status == 200) {
            Ti.API.info("XHR Status : " + xhrpost.status);
            data = JSON.parse(this.responseText);
            Ti.API.info("Response from server :" + data);
            if (platform == 'android') {
                var toast = Titanium.UI.createNotification({
                    message : 'Table booked Successfully!',
                    duration : Titanium.UI.NOTIFICATION_DURATION_SHORT
                });
                toast.show();
            }
            if (platform == 'iphone') {
                alert('Table booked Successfully!');
            }

        } else {

            Ti.API.info("XHR Status : " + xhrpost.status);
        }

    };

}

我不明白我做错了什么。

我正在通过 JSON Get 方法从服务器收集数据并将其添加到数组中。将该数组转换为 JSON 并将其发布到服务器。

以下是我如何从服务器获取订单 ID 并将其保存到数组中的方法。

aButton.addEventListener('click', function() {

            name = textUser.value;
            qty = textPass.value;
            price = textConfirmPass.value;
            type = textEmail.value;

            var url = "http://vrsweb.in/hotels/admin/ws/placeOrder.php?tName=" + id + "&wName=" + logName;

            var xhr = Titanium.Network.createHTTPClient();
            xhr.setTimeout(5000);
            //xhr.autoEncodeUrl = false;
            xhr.open('POST', url);
            xhr.setRequestHeader('User-Agent', 'My User Agent');

            xhr.send();
            xhr.onerror = function(e) {

                Ti.API.debug(e.error);
                var toast = Titanium.UI.createNotification({
                    message : 'Error! Can not book table! ',
                    duration : Titanium.UI.NOTIFICATION_DURATION_SHORT
                });
                toast.show();
                Ti.API.info("Status code :" + xhr.status);
            };
            xhr.onload = function() {
                if (xhr.status == 200) {
                    Ti.API.info("XHR Status : " + xhr.status);
                    oID = JSON.parse(this.responseText);
                    Ti.API.info("Response from server :" + oID);
                    var id = oID;
                    tempData = {
                        oId : id,
                        itemName : name,
                        qtyPerPlate : qty,
                        qtyPerKg : '0',
                        pricePerPlate : price,
                        pricePerKg : '0',
                        type : type
                    };

                    arrayOBJ.push(tempData);

                    orderData = {
                        Item : arrayOBJ
                    };

                    JSONStringData = JSON.stringify(orderData);
                    Ti.API.info("Data Added :" + orderData);
                    var toast = Titanium.UI.createNotification({
                        message : 'Added Data!',
                        duration : Titanium.UI.NOTIFICATION_DURATION_SHORT
                    });
                    toast.show();
                } else {

                    Ti.API.info("XHR Status : " + xhr.status);
                }

            };

            Ti.API.info("id :" + id);
            Ti.API.info("name :" + logName);

        });

最佳答案

我成功了。这是我改变的内容。

xhrpost.setRequestHeader('User-Agent', 'My User Agent');
xhrpost.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

关于javascript - JSON 数据发布到 Android/iOS 版 Titanium 中的服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24484375/

相关文章:

javascript - backbone.js 未保存具有更新属性的模型

javascript - 垂直布局间隙 - 钛

javascript - Protractor 通过名称标签获取元素

javascript - react JS : Rendering object keys and its values

javascript - 配置 Sequelize.js 以在 findById() 上抛出 EmptyResultError 但如果 findAll() 为空则解析 []

Titanium.UI.TextArea 用于文本显示 : Content positioning to start reading text from beginning

javascript - 为什么函数返回 bool 值?

titanium - 合金资源文件夹在哪里

javascript - 如何移动 map 模块上的 userLocationButton? [加速器]

javascript - Titanium Appcelerator - 以相反顺序获取 JSON