jQuery で非同期ではなく同期の Ajax リクエストを実行するにはどうすればよいでしょうか? 質問する

jQuery で非同期ではなく同期の Ajax リクエストを実行するにはどうすればよいでしょうか? 質問する

標準拡張ポイントを提供する JavaScript ウィジェットがあります。そのうちの 1 つは関数ですbeforecreatefalseアイテムが作成されないようにするには、関数を返す必要があります。

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 リクエストを実行する方法はありますか?

ベストアンサー1

からjQuery ドキュメント:同期 Ajax リクエストを取得するには、非同期オプションをfalse に指定します。その後、コールバックは、親関数が処理される前にデータを設定できます。

提案どおりに変更した場合、コードは次のようになります。

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
    });
}

おすすめ記事