3

私の ASPX コードはいくつかの html ファイルを生成し、そこにページング用のリンクを配置しました。

<a href="1.html">First</a>&nbsp;|&nbsp;
<a href="3.html">Next</a>&nbsp;|&nbsp;
<a href="1.html">Previous</a>&nbsp;|&nbsp;
<a href="9.html">Last</a>

次へを押したときに現在2番目のページにいるユーザーが3番目のページに移動した場合...

現在の問題は、ユーザーが [次へ] ボタンを数回クリックし、システムが生成中の場合、たとえば 5 ページ目でエラー ページが表示されることです。

ファイルが存在するかどうかを確認するために、javascriptを介してhtmlから確認する方法はありますか? このショーストッパーの問題から抜け出すのを手伝ってください

4

3 に答える 3

6

ファイルが存在するかどうかを確認するためにajaxを使用できます

Jquery の使用

$.ajax({
        url:'http://www.example.com/3.html',
        error: function()
        {
           alert('file does not exists');
        },
        success: function()
        {
            alert('file exists');
        }
    });

Javascript の使用

function checkIfRemoteFileExists(fileToCheck)
{
    var tmp=new Image;
    tmp.src=fileToCheck;

    if(tmp.complete)        
        alert(fileToCheck+" is available");        
    else        
     alert(fileToCheck+" is not available");        
}

ファイルが存在するかどうかを確認するか、このような js 関数を呼び出さない

checkIfRemoteFileExists('http://www.yoursite.com/abc.html');​
于 2012-09-01T09:14:38.820 に答える
0
  • @Sibuのソリューションには問題があります。実際にファイルをダウンロードします(潜在的に大きくなり、トラフィックを浪費する可能性があります)
  • 2021 年には、新しいプロジェクトでjQuery を使用すべきではありません
  • ネイティブのPromisesFetchが今日の主流です
<output id="output"></output>

<script>
// create a non-cached HTTP HEAD request
const fileExists = file =>
  fetch(file, {method: 'HEAD', cache: 'no-store'})
  .then(r => r.status==200);

// check the file existence on the server
// and place the link asynchronously after the response is given
const placeNext = file => fileExists(file).then(yes => output.innerHTML = 
   (yes ? `<a href="3.html">Next</a>` : '')
);

// place the "next" link in the output if "3.html" exists on the server
placeNext('3.html');
</script>
于 2021-05-30T18:46:38.070 に答える