0

resultload イベント内で作成された変数にアクセスして返そうとしています:

function submit_form_with_file(form, link, file)
{
    var iframe = $('<iframe name="postiframe" id="postiframe" style="display: none" ></iframe>');
    //append the iframe to the html page
    $("body").append(iframe);
    result="";
    var form = $(form);
    ...
    form.submit();
    $(iframe).load(function ()
    {
        var body=window.frames[$(iframe).attr("name")].document.body;
        result=(body.textContent || body.innerText);
        alert(result);
    });
    return result;
}

return resultiframe が読み込まれるまで待ってからresult、load イベント内で変数を返します。それを達成する方法は?

4

1 に答える 1

1

コールバックは非同期で実行されるため、値を返すことはできませんload。できることは、ロードが完了したときに呼び出されるコールバックを渡すことです。

function submit_form_with_file(form, link, file, loadCallback) {
    var iframe = $('<iframe name="postiframe" id="postiframe" style="display: none" />');
    // append the iframe to the html page
    $("body").append(iframe);
    result = "";
    var form = $(form);
    // ...
    form.submit();
    $(iframe).load(function () {
        var body = window.frames[$(iframe).attr("name")].document.body;
        result = (body.textContent || body.innerText);
        loadCallback(result);
    });
    return result;
}

それから

submit_form_with_file(form, link, file, function (result) {
    //loading is completed, do something with result
})
于 2013-09-05T09:58:47.813 に答える