2012-01-19 27 views
0

私はajaxで投票しています。各IPは一度投票できます。 これは動作しますが、データベースに複数回追加されることはありません。 今、私は彼が私がこのコードを使用して投票することをユーザーに示すために、immedentlyたい:ここvote.phpページでajaxはfirefoxとchromeで動作しますが、ieでは動作しません。

function vote(id) 
{ 
    var xmlhttp; 
    if (window.XMLHttpRequest) 
     {// code for IE7+, Firefox, Chrome, Opera, Safari 
     xmlhttp=new XMLHttpRequest(); 
     } 
    else 
     {// code for IE6, IE5 
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
     } 

    xmlhttp.onreadystatechange=function() 
     { 
     if (xmlhttp.readyState==4 && xmlhttp.status==200) 
     { 

      if (xmlhttp.responseText == "true1") 
       document.getElementById("b"+id).innerHTML = parseInt(document.getElementById("b"+id).innerHTML) + 1; 
     } 
     } 

    xmlhttp.open("GET","vote.php?id="+id,true); 
    xmlhttp.send(); 
} 

すると、コードは次のとおりです。

if (!(mysql_fetch_array(mysql_query("SELECT * FROM `votes` WHERE IP = '$IP'")))) 
{ 
    echo "true1"; 
} 
else 
{ 
    echo "false0"; 
} 
Firefoxとクロムとの素晴らしい作品

。 火かき棒で試してみましたが、私は "true1"か "false0"を取得しますが、IEではうまくいかず、なぜですか?

+3

'jQuery'のように、ajaxのライブラリ/フレームワークを使うことができます。 –

+0

フレームワークが恩恵を受けることに同意するでしょう。以下の回答を参照してください... –

+0

FFとChromeの両方がこのコードでうまく動作し、IEは動作しないことがありますか? – user1104615

答えて

4

GETの代わりにPOSTにあなたのajaxリクエストを変更します。IEは、GETであるリクエストをキャッシュするために有名です。

PHP変数を$ _POSTにも更新しないでください。

これが完了すると、問題はなくなります。

+0

魔法のように動いた、ありがとう:) – user1104615

関連する問題