Ajax将图像发送到服务器

时间:2014-04-09 04:01:34

标签: javascript ajax html5 jquery-mobile cordova

我正在使用phonegap应用程序。我想将数据图像发送到服务器,但我无法发送它。

function addSiteToServer() {
    var cId = localStorage.getItem("cId");
    var sname = $('#sitename').val();
    var slat = $('#lat').val();
    var slng = $('#lng').val();
    var storedFieldId = JSON.parse(localStorage["field_id_arr"]);
    var p = {};
    for (var i = 0; i < storedFieldId.length; i++) {
        var each_field = storedFieldId[i];
        var val_each_field = $('#' + each_field).val();
        p[each_field] = val_each_field;
        console.log("p" + p);
    }
    var online = navigator.onLine;
    if (online) {
        var data = {
            site: {
                collection_id: cId,
                name: sname,
                lat: slat,
                lng: slng,
                properties: p
            }
        };
        //function sending to server
        $.ajax({
            url: App.URL_SITE + cId + "/sites?auth_token=" + storeToken(),
            type: "POST",
            data: data,
            enctype: 'multipart/form-data',
            crossDomain: true,
            datatype: 'json',
            cache: false,
            contentType: false,
            processData: false,
            success: function(data) {
                console.log("data: " + data);
                alert("successfully.");
            },
        }

1 个答案:

答案 0 :(得分:1)

看起来您正在使用常规方法将数据/图像发送到服务器,这是Phonegap / Cordova Framework不推荐的。

我请求您使用以下方法替换您的代码,该方法按预期工作,我还使用本地存储功能将值发送到服务器,

function sendDataToServer(imageURI) {
    var options = new FileUploadOptions();
    options.fileKey="file";
    options.fileName=imageURI.substr(imageURI.lastIndexOf('/')+1);
    options.mimeType="image/jpeg";

    var params = {};

    params.some_text = localStorage.getItem("some_text");
    params.some_id = localStorage.getItem("some_id");
    params.someother_id = localStorage.getItem("someother_id");
    options.params = params;

    var ft = new FileTransfer();
    ft.upload(imageURI, encodeURI("http://example.co.uk/phonegap/receiveData.php"), win, fail, options);
}
function win(r) {
    console.log("Code = " + r.responseCode+"Response = " + r.response+"Sent = " + r.bytesSent);
}

function fail(error) {
    alert("An error has occurred: Code = " + error.code);
}
function saveData(){
    sendDataToServer(globalvariable.imageURI);
    alert("Data Saved Successfully");
}

希望这有帮助。