1. ホーム
  2. javascript

[解決済み] どうすればjQueryに非同期ではなく、同期のAjaxリクエストを実行させることができますか?

2022-03-17 15:06:04

質問

標準的な拡張ポイントを提供するJavaScriptウィジェットを持っています。そのうちの1つは beforecreate 関数があります。この関数が返すべきは false を使用すると、アイテムが作成されないようにすることができます。

この関数にjQueryを使ったAjaxの呼び出しを追加しています。

beforecreate: function (node, targetNode, type, to) {
  jQuery.get('http://example.com/catalog/create/' + targetNode.id + '?name=' + encode(to.inp[0].value),

  function (result) {
    if (result.isOk == false) 
        alert(result.message);
  });
}

しかし、ウィジェットにアイテムが作成されないようにしたいので、ウィジェットに false をコールバックではなくマザーファンクションで使用します。jQueryまたは他のインブラウザーAPIを使用して同期AJAXリクエストを実行する方法はありますか?

解決方法は?

からの jQueryのドキュメント : を指定します。 非同期 オプションで 虚偽 を使用すると、同期Ajaxリクエストを取得できます。それから、コールバックはマザー関数が進行する前にいくつかのデータを設定することができます。

提案されたとおりに変更すると、以下のようなコードになります。

beforecreate: function (node, targetNode, type, to) {
    jQuery.ajax({
        url: 'http://example.com/catalog/create/' + targetNode.id + '?name=' + encode(to.inp[0].value),
        success: function (result) {
            if (result.isOk == false) alert(result.message);
        },
        async: false
    });
}