2009-09-04 12 views
1

しかし、それはFirefoxで動作します。phpファイルへのAJAX呼び出しがie8で動作しない

これは私のjavascriptです:ヘッダ( "コンテンツタイプ:text/xmlで")

star.updateRating=function(v, listid) { 
xmlHttp=GetXmlHttpObject(); 
if (xmlHttp==null) { 
    alert("Your browser does not support AJAX!"); 
    return; 
} 
var randomnbr = randomID(12); 
var cacheid = randomnbr+"_"+listid;    
var url="http://mywebsiteurl.com/includes/functions_rating.php";     
    url=url+"?action=ratelist";      
    url=url+"&listid="+listid;     
    url=url+"&rating="+v;  
    url=url+"&cid="+cacheid;  
// disable the container 
$('starMsg').innerHTML=' - Thanks for rating!'; 
$('star').setAttribute('onmousemove',''); 
$('star').setAttribute('onmousedown',''); 

xmlHttp.open("POST",url,true); 
xmlHttp.send(null); 

}

私のPHPファイルは、から始まります。

コードはすべて実行されます(警告(1); jの最後に実行されます)。しかし、phpはスクリプトが呼び出されたときにデータベースを更新しません。

アイデア?

答えて

1

IEで正しくオブジェクトを取得するだけでなく、FFには、以下を使用します

function GetXmlHttpObject() 
{ 
    if (window.XMLHttpRequest) 
    { 
    // code for IE7+, Firefox, Chrome, Opera, Safari 
    return new XMLHttpRequest(); 
    } 

    if (window.ActiveXObject) 
    { 
    // code for IE6, IE5 
    return new ActiveXObject("Microsoft.XMLHTTP"); 
    } 

    return null; 
} 

と機能を使用します。

xmlhttp=GetXmlHttpObject(); 

EDIT:第二の考えでは、あなたがオブジェクトを取得することができるが(あなたはあなたのGetXmlHttpObject()関数について言及していませんが、私は上記の答えを残しています)。

しかし、xmlhttp.send(null)はmあなたが言及するethodはPOSTです。空の要求をサーバーに送信していますか?そうでない場合は、POST経由で送る変数を.send()で追加するか、メソッドをGETに変更して変数をURLに入れてください。

0

どのようにXMLHTTPRequestオブジェクトを作成しますか? Internet ExplorerではFirefoxとは異なる方法で実行する必要があることに注意してください。

2

jqueryのようなものを使用して、これらのブラウザ固有の違いを隠さないのはなぜですか?

+0

1 jqueryのを言及するために – Mohamed

0

シュート、それは私のPHPファイルで問題でした。私は初めにそれをキャッチしなかったので、私は別のユーザーを使用していました。実際には2つの問題があり、そのうちの1つはGETに戻って解決されました。 (私はそれが他の質問のajax問題への解決策として提供されたので、もともとPOSTに変更されました)。

1
xmlHttp.open("POST",url,true); 
xmlHttp.send(null); 

send(null)これは間違いかもしれません。

あなたはsend('')空のボディを送ったり、完全にパラメータを省略する(send()を)言うことができますが、nullパラメータを含むのXMLHttpRequestインタフェースによって指定されていません。

POST要求の場合、リクエスト文字列としてクエリ文字列に含めるのではなく、フォームエンコード(a=b&x=y)文字列をリクエスト本体として送信するのが普通です。

(評価を追加すると、状態が変化するアクションなので、あなたは間違いなくGET、POSTを使用していないする必要があります。)

関連する問題