0

ここにデモがあります 簡単に言えば、誰かがテキストの変更をクリックすると、next()機能がトリガーされます。

next()関数は相対データを ajax_next_track.php に送信し、ランダムなデータを取得します。

次に、テキストartist_nametrack_nameスパンをランダム データに置き換えます。

これらはすべて、Firefox と Chrome で正常に動作します。ただし、Internet Explorer にはありません。別のブラウザーでテキストの変更を 2 回以上クリックすると、問題が発生する可能性があります。

他のブラウザでは、画面に「読み込み中...」というテキストが表示される操作時間があります。しかし、それは Internet Explorer での操作時間なしですぐに発生します。

関数 next() はデータを ajax ファイルに送信できません。

それで、どうすれば修正できますか?

よろしくお願いします。

    function next(tags)
    {
        var hr = new XMLHttpRequest();
        var url = 'ajax_next_track.php?tags=' + tags;
        hr.open("GET", url, true);
        hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        hr.onreadystatechange = function() 
        {
            if(hr.readyState == 4 && hr.status == 200) 
            {   
               var return_data = hr.responseText;
               jsonObj = JSON.parse(return_data);
               document.getElementById("artist_name").innerHTML = jsonObj.artist_name;
               document.getElementById("track_name").innerHTML = jsonObj.track_name;
               document.getElementById("name").title = 'play '+jsonObj.artist_name+' - '+jsonObj.track_name+' radio';

            else
            {

            }
        }

        document.getElementById("track_name").innerHTML = 'loading...';
        document.getElementById("artist_name").innerHTML = '';
        hr.send(null); 
}

<div id="player">
    <div id="playPauseOutDiv" onclick="pause();">

    </div>
        <div id="artist_track">
            <span id="artist_name">gerry rafferty</span> 
            <span id="track_name">baker street</span>
        </div>
    </a>

    <div id="ikinciSatir">
        <a id="changeSong" title="Shuffle" href="javascript:void(0);" onclick="next('3871');">Change</a>
    </div>
</div>
4

3 に答える 3

4

ちょうど2日前に同じ問題に遭遇しました。私はIE8を使用していましたが、その後のajax呼び出しは実際には行われませんでしたが、IE8は代わりにキャッシュを使用しようとしました.

これはajaxのドキュメントページで見つけました

デフォルトでは、リクエストは常に発行されますが、ブラウザはそのcache. キャッシュされた結果の使用を禁止するには、 に設定cachefalseます。最後のリクエスト以降にアセットが変更されていない場合にリクエストが失敗を報告するようにするには、ifModified を true に設定します。

それが役立つかどうか試してください。ここにドキュメントがありますhttp://api.jquery.com/jQuery.ajax/

于 2013-07-12T22:59:14.100 に答える
3

For some reason, IE caches the JSON file and gets 304 Not Modified response instead of 200 OK each time after the 1st one.

The easiest workaround for this that doesn't need to change server side settings is to add some random parameter to the requested URL on each request, e.g.

var url = 'ajax_next_track.php?tags=' + tags + '&nocache=' + Math.random();
于 2013-07-12T22:54:41.650 に答える