AJAX调用php文件在ie8中无效

时间:2009-09-04 05:10:24

标签: javascript ajax internet-explorer-8

但它适用于Firefox。

这是我的javascript:

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文件以:header(“content-type:text / xml”);

开头

代码将一直运行(alert(1);将在js的末尾执行)。但是,从ie。

调用脚本时,php不会更新数据库

有什么想法吗?

5 个答案:

答案 0 :(得分:2)

为什么不使用jquery之类的内容来隐藏这些特定于浏览器的差异?

答案 1 :(得分:1)

使用以下命令在IE和FF中正确获取Object:

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();

编辑:再想一想,你可能正确地获得了对象(虽然你没有提到你的GetXmlHttpObject()函数 - 这就是为什么我要留下我的上述答案。

但是你调用的是xmlhttp.send(null),而你提到的方法是POST。您是否向服务器发送空请求?如果没有,则在.send()中添加要通过POST发送的变量,或者将方法更改为GET并将变量放在url中。

答案 2 :(得分:1)

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

send(null)值得怀疑,这可能是错误的。

您可以说send('')发送空体,或完全省略参数(send()),但XMLHttpRequest接口未指定包含null参数。

对于POST请求,通常会将表单编码(a=b&x=y)字符串作为请求正文发送,而不是将其包含在查询字符串中。

(因为添加评级是一种状态改变动作,你肯定应该使用POST而不是GET。)

答案 3 :(得分:0)

如何创建XMLHTTPRequest对象?请记住,它需要在IE中以不同于Firefox的方式完成。

答案 4 :(得分:0)

拍摄,这是我的php文件中的一个问题。我在ff中使用的是另一个用户,所以我一开始并没有抓住它。实际上,涉及到两个问题,其中一个问题是通过改回GET来解决的。 (我最初改为POST,因为它是作为其他问题中的ajax问题的解决方案提供的。)