0

プロシージャ onsubmit を呼び出すフォームがあります。このプロシージャはドキュメントを解析し、アダプターに渡される json オブジェクトを作成します。onSubmit プロシージャが終了すると、アダプターへの呼び出しが強制終了され、アダプターの onFailure メソッドが呼び出されるようです。

私の質問は、onSubmit プロシージャでアダプターが終了するのを待つ方法です。

onSuccess にフラグを追加して、フラグが設定されるまで待機すると、実際の失敗をキャプチャできません。プロセスが強制終了されたために onFailure が呼び出されるため、onFailure にフラグを追加すると、プロセスの終了を待つことができなくなります。

onSubmit プロシージャでアダプタへの呼び出しの後にアラートを追加し、onSuccess がトリガーされるのを待つと機能します...

ここにいくつかのコード:

function postCustomer(content) {
    var invocationData = {
        adapter : 'myAdapter',
        procedure : 'postCustomerByContent',
        parameters : [ content ]
    };

    WL.Client.invokeProcedure(invocationData, {
        onSuccess : postCustomerSuccess,
        onFailure : postCustomerFailure,
        timeout: 30000
    });
}

function postCustomerSuccess(result) {
    var httpStatusCode = result.status;
    if (200 == httpStatusCode) {
        var invocationResult = result.invocationResult;
        var isSuccessful = invocationResult.isSuccessful;
        if (true == isSuccessful) {
            WL.SimpleDialog.show('Title', "Success", [{text : 'OK'}]);
        } else {
            WL.SimpleDialog.show('Title', "Error. isSuccessful=" + isSuccessful, [{text : 'OK'}]);
        }
    } else {
        WL.SimpleDialog.show('title', "Error. httpStatusCode=" + httpStatusCode, [{text : 'OK'}]);
    }
}

function postCustomerFailure(result) {
    WL.SimpleDialog.show('Title', "Failed:"+result, [{text : 'OK'}]);
}

function formSubmit() {
    var application = document.forms["application"], initial = application["ibmerName"].value, email, name, organizationName = application['organizationName'].value, primaryContactName = application['primaryContactName'].value, primaryContactEmail = application['primaryContactEmail'].value, organizationAddress = application['organizationAddress'].value, primaryContactPhoneNumber = application['primaryContactPhoneNumber'].value, country = application['country'].value, organizationType = application['organizationType'].value;
    if (initial == "xxx") {
        email = "xxxxxxxxxxxxxxxxx";
        name = "xxx";
    } else if (initial == "yyy") {
        email = "yyyyyyyy";
        name = "yyyyyyyyyy";
    } else {
        email = "xxxxxxxxxxxxxxxxxx";
        name = "xxxxxxxxxxxxxxxxx";
    }
    var content = '{"email":"' + email + '","name":"' + name
            + '","organizationName":"' + organizationName
            + '","primaryContactName":"' + primaryContactName
            + '","primaryContactEmail":"' + primaryContactEmail
            + '","organizationAddress":"' + organizationAddress
            + '","primaryContactPhoneNumber":"' + primaryContactPhoneNumber
            + '","country":"' + country + '","organizationType":"'
            + organizationType + '"}';
    postCustomer(content);

    alert(content);

}

何か案が?どうも

4

1 に答える 1

0

はページの更新です。その場合は、formSubmit 関数の最後で return false を実行する必要があります。

于 2013-10-02T18:30:51.757 に答える