3

このシナリオでは:

  • ユーザーがテキストボックスに情報を入力します
  • ユーザーがボタンをクリックする
  • 入力された情報のサーバー側処理が行われます
  • そのサーバー側の処理の結果に応じて新しいウィンドウが開く、現在のページにメッセージが表示されます(ポップアップは表示されません)。

async: falsejQueryajax呼び出しで使用する以外のアプローチを思い付くことができません。これは強くお勧めしません

このオプションをfalseに設定すると(したがって、呼び出しが非同期でなくなる)、ブラウザーが応答しなくなる可能性があるため、強くお勧めしません。

私はもう試した:

  • 呼び出しを非同期にし、コールバックハンドラーで、サーバーの発言に応じて、新しいウィンドウを開くことがあります-これはポップアップブロッカーによってブロックされます
  • 別のアイデアは、その不快さのために私も気にしませんでしたが、常にウィンドウを開くことです。サーバーを呼び出し、時にはそれ自体を閉じるのはこの新しいウィンドウです(途中で親のテキストを更新します)

私が決めたのは、上記で説明したことです。クリックハンドラーで同期サーバー呼び出しを実行し、サーバーがそうするように指示した場合は、新しいウィンドウを開きます。ウィンドウの開きはクリックハンドラーで行われるため、ポップアップブロッカーはこれに満足しています。だが...


良い解決策を提供していない同様の(ただし、常に新しいウィンドウを開きたいとは限らないため、重複しない)質問:

4

2 に答える 2

0

私は「不快な」アイデアを試しました。常に新しいウィンドウを開き、その新しいウィンドウにサーバー呼び出しを行わせ、サーバー呼び出しの結果で不要であることが示された場合は自動的に閉じます。

しかし、それはかなりひどいものだったので、私は同期呼び出しに固執しました。

したがって、私にとって、この質問に対する答えはノーです。この状況で同期することは避けられません

于 2011-12-16T14:27:53.480 に答える
0

あなたにできることは、

サーバー側でtrueやfalseなどの値で設定される非表示フィールドをページに配置してみてください。これは、後でjquerydocument.ready関数で確認できます。

値がfalseの場合は、メッセージを表示するだけです。それ以外の場合は、新しいウィンドウをポップアップします。

それと同じくらい簡単

于 2011-09-18T04:56:33.400 に答える