1

PHP から返された配列を取得しています。これを最初に php で json_encode() し、その配列をエコーし​​ます。「非同期」を無効にするAJAXリクエストで配列を取得します。それを使うべきではないことはわかっていますが、それが私が見つけた唯一の方法でした。

それは私にこれを返します:

{"id":"38","name":"111111111111111111111111111111111111111111111.jpg"}

そして、これは私のAJAXリクエストです:

function uploadFile(file){
    var formData = new FormData();
    formData.append('formData', file);
    $.ajax({
        url: 'inc/ajax/uploadFile.php',  //Server script to process data
        type: 'POST',
        data: formData,
        contentType: false,
        processData: false,
        async:   false,
        //Ajax events
        success: function(html){
            strReturn = html;
        }
    });
    return strReturn;
}

これを行うと、配列全体が取得されます。

var img = uploadFile(file);
console.log(img);

しかし、「img.name」または「img.id」を呼び出すと、未定義と表示されます。

4

3 に答える 3

3

オブジェクトの JSON 文字列表現を受け取っています。JSON を期待していることを jQuery に伝えて、JSON を実際の Javascript オブジェクトに解析します。

data: formData,
dataType: 'json', // Add this line
于 2013-08-28T19:19:30.920 に答える
0

これを試して:

function uploadFile(file){
    var formData = new FormData();
    formData.append('formData', file);
    $.ajax({
        url: 'inc/ajax/uploadFile.php',  //Server script to process data
        type: 'POST',
        data: formData,
        contentType: false,
        dataType: "json",
        processData: false,
        //Ajax events
        success: function(html){
            strReturn = html;
            return strReturn;
        }
    });
}

strReturn は返された時点で定義されていないため、未定義と表示されます。ajax の成功メソッドは数ミリ秒の遅延で呼び出されるため、ajax の終了後に変数を返す必要があります。

于 2013-08-28T19:21:40.870 に答える