別のページにリンクするボタンがあります。そのリンクをクリックする前に、そのページが現在エラーを返しているかどうか、または存在しないかどうかを確認したいと思います。これをどのようにコーディングできますか?これは可能ですか?リンクが存在しない場合、またはエラーが返される場合は、リンクを無効にしたいと考えています。
4 に答える
ajax を使用してページをロードし、それを解析して、ユーザーをリダイレクトする前にエラーがあるかどうかを確認できます。また、リンクが機能しない理由について、ユーザーに何らかのメモを含めます。
サーバー側でこれを行うことに注意してください。ただし、タグは jquery に関連しているため、jquery で試すことができる解決策を投稿します。
jquery を使用すると、次のことができます。
var link = $('#id_of_your_a_element');
$.ajax(
url: link.attr('href'),
error: function() {
link.hide();
}
);
編集
ribot が指摘したように、この例はリンクを非表示にするだけです。無効にしたい場合は、ユーザーがリンクをクリックしたときのデフォルトの動作を防ぐことができます:
link.click(function(e) {
e.preventDefault();
});
または、代わりに href 属性を削除します。
link.removeAttr('href');
誰かが尋ねたように、あなたが使用しているサーバー側のプログラミング言語は何ですか?
ここで回答を確認してください: How to get status code of remote url using Javascript/Ajax but not using jQuery? . これと同じ質問で、答えはすべてのベースをカバーしています。
すべてのリクエストをクリックする際の Ajax は、それが HEAD リクエストであっても (HTTP 動詞が最初に存在する理由であるため、通常、URL の存在をテストするために使用する必要があります)、信じられないほど悪い考えだと思います。おそらく克服できないクロスドメインの問題を乗り越えることができます(ajaxによって呼び出される何らかのサーバー側のチェックを含まない限り)。さて、リンクが(クライアント側とサーバー側の両方で)再チェックされないように、どこかに応答を保存できると思いますが、これは、通常はそうではない問題に対する非常に複雑すぎる解決策であると私は思います。解決する必要があります。