但它适用于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不会更新数据库有什么想法吗?
答案 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问题的解决方案提供的。)