現在、さまざまな製品の評価が必要な電子商取引ショッピングサイトで作業しています。私は星評価スクリプトを使用しています。AjaxがInternet Explorerで正しく動作しない
すべてはうまくいっていますが、製品は訪問者のIPに従って一度だけ評価され、訪問者が(5つの星の中の)星をクリックすると、すべての星が無効になり、同じIPを防ぐことができます(私はサーブ側のバリデーションも使用しています)。データベースからの新しい値に基づく平均格付けは、同じ星(無効にされたばかりの)によって示されるべきです。
Firefoxで問題なく動作しています。訪問者が星をクリックすると、新しい値が(Ajaxを使用して)データベースに渡され、新しい値に従って平均評価が計算され表示されますが、Internet ExplorerはAjaxを使用してデータベースから新しい値を取得できません。
私は次のように非常に単純なコードでこの問題を実証しています。続き
は、ファイルの両方のコードをTemp.phpが
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript" language="javascript">
var xmlhttp;
function ajax()
{
if(window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
else
{
xmlhttp = new ActivexObject("Microsoft.XMLHTTP");
}
}
function loadStars(prod_id)
{
ajax();
xmlhttp.onreadystatechange=function()
{
if(xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("ajax_response").innerHTML=xmlhttp.responseText;
var rating= document.getElementById("rating_value").value;
alert(rating); //Rating value of hidden field from the ajax response is alered.
}
}
var queryString="Temp1.php?prod_id="+prod_id;
xmlhttp.open("GET", queryString, true);
xmlhttp.send();
}
</script>
</head>
<body onload="loadStars(11);">
<span id="ajax_response"></span>
</body>
</html>
を提出し、次はTemp1.php
<?php
include_once("../Connection.php");
$con=new Connection();
$con->get_connection();
if(isset($_GET['prod_id']))
{
$result=mysql_query("select rating_num from rating where prod_id=".$_GET['prod_id']."");
$rating=mysql_result($result, 'rating_num');
echo "<input type='hidden' id='rating_value' name='rating_value' value='$rating'/>";
}
?>
であるとは何の関係もありません。 js関数loadStars(prod_id)
はTemp1.php
へのAjaxリクエストを実際に呼び出すonload
イベントで呼び出され(ボディタグを参照)、データベースからrating_num
を取得し、Temp.php
ファイルで最終的に警告されるrating_value
という名前の隠しフィールドに格納します。 rating_num
の値がデータベースに変更されたときalert(rating);
実際の質問はここにある、Firefoxは不可欠ですが、ページが更新されるとリロードにもかかわらず、インターネットエクスプローラ(8)はまだ古い値を表示する更新された値を表示しました何回も何回も。
どのような理由がありますか?この問題の解決策はありますか?あなたが私の言いたいことを理解できることを願っています。
解決方法私は+1000を与えることができたが、残念なことに、私は+1しか持っていない。 – Bhavesh
私は手伝ってくれてうれしいです。 – jmort253