2

PhoneGapを使用してモバイルアプリを開発し、jQueryのajaxを使用してサーバー(php)にファイルをアップロードする方法があるかどうかを尋ねたいと思います。Webページからのリダイレクトを避けたいのでajaxを使用します(もちろん、自分のページにリダイレクトしたいです)。だから、ここに私のコードのいくつかがあります:

$.ajax({
    url: url,
    data: $("#myform").serialize(),
    type: "post",
    dataType: "json"
});

以下でこれらの組み合わせを試しましたが、何も機能しません。何か案が ?

contentType: false
cache: false
processData: false
contentType: "multipart/form-data"
4

3 に答える 3

1

おそらく、PhoneGapのFileTransferクラスを使用する必要があります。

ドキュメントといくつかのサンプルコードはここにあります:http://docs.phonegap.com/en/2.0.0/cordova_file_file.md.html#FileTransfer

于 2012-09-05T19:23:15.603 に答える
1
<script>
$(document).ready(function(){
$('#button').click(function(){
    var formData = new FormData($('form')[0]);
    alert(formData)
    $.ajax({
        url: '/testupload2/',  //server script to process data
        type: 'POST',
        xhr: function() {  // custom xhr
            myXhr = $.ajaxSettings.xhr();
            if(myXhr.upload){ // check if upload property exists
            myXhr.upload.addEventListener('progress',progressHandlingFunction, false); // for handling the progress of the upload
            }
            return myXhr;
        },
        //Ajax events

        success: function(data){
            alert('Done')
        },
        error: function(jqXHR, textStatus, errorThrown){
            alert("Some Error!")
        },
        // Form data
        data: formData,
        //Options to tell JQuery not to process data or worry about content-type
        cache: false,
        contentType: false,
        processData: false
    });
});

function progressHandlingFunction(e){
    if(e.lengthComputable){
        $('progress').attr({value:e.loaded,max:e.total});
    }
}
</script>

HTML本文部分:

<body>
<form enctype="multipart/form-data">
<input name="file" type="file" />
<input type="button" id ="button" value="Upload" />
</form>
<progress>
    progressHandlingFunction()
</progress>
</body>
于 2013-04-25T20:43:04.087 に答える
0

AJAX呼び出しを使用してファイルを簡単にアップロードすることはできません。

ベースエンコードすることも、別の方法で転送することもできますが、jQuery用のファイルアップロードプラグインがかなりたくさんあります。

于 2012-09-05T11:15:16.490 に答える