问题描述:我用ajax将数据库中得到的值传到jsp页面,利用IE可以得到值,但是利用Chrome得到的值是Unfefined .开始我以为是缓存问题,但是我对缓存做了相关设置,仍然不能解决。
一、js里面的部分代码如下 :
1.获得xmlrequest
[color=orange] var xmlrequest;
function createXMLHttpRequest() {
if (window.ActiveXObject) {
xmlrequest = new ActiveXObject("Microsoft.XMLHTTP");
} else {
xmlrequest = new XMLHttpRequest();
}
}[/color][color=blue][/color]
2.转到jsp页面的代码如下
[color=blue]function setProUniv(o) {
createXMLHttpRequest();
if (xmlrequest) {
//准备发送请求
var req = "/SSH05/changeUni?proId=" +o.proId + "&coId=" +o.coId+"&surl="+Math.random();
window.alert(req);
//打开请求
xmlrequest.open("get", req, true);
xmlrequest.send(req);
}
}[/color]
二、jsp页面部分代码如下
[color=blue]<!-- 显示省份 -->
程序运行之后 IE下面显示了得到了数据因为 window.alert(req); 会弹出一个提示框。
/SSH05/changeUni?proId=4&coId=1&surl=0.3469222103628817
而Chrome下面显示为
/SSH05/changeUni?proId=undefined&coId=undefined&surl=0.3105704408647314
本来我以为是Chrome得不到数据,但是我在后面加了另外一个随机的参数
&surl="+Math.random() 在Chrome 下面虽然前面两个参数都得不到,但是后面的那个随机生成的数每次都在变化,这是为什么呢?不是应该都为undefined才算是合理吗?当然我的本意当然是希望在Chrome下面也能成功得到参数。
不知道问题描述清楚没有?谁帮我解答一下吧,谢谢!
在在Chrome和FireFox下它将自定义属性放在了attributes的数组里面,必须通过如下方式获取属性的自定义属性的值:
o.attributes['proId'].value;
而在ie下:
利用你说的方式可以很方便的访问
我查看了一下调用栈,其实他们都把自定义变量放在了一个attributes的数组里面如果想兼容又自己写的话,可以利用如下方式:
o.attributes['proId'].value;获取值
在firefox中,属性值大小写不敏感,ie中大小写敏感。
我觉得也就是浏览器访问自定义属性的方式不一样导致了你的问题!
这个是因为浏览器之间的差异。
如果你只有两个参数的话,最简单实现就直接传参数,不需要把作为一个属性来赋值。
另外:如果实现在要用属性来实现的话,可以用jquery来做(自己写实现的话,太麻烦)
通过:ID来查找,$('#a1').attr('proId')
[code="java"]
function setProUniv(o) {
// 这样就可以了,不用写ID了。(jsp代码也不用改了)
var proId = $(o).attr('proId');
createXMLHttpRequest();
if (xmlrequest) {
//准备发送请求
var req = "/SSH05/changeUni?proId=" +o.proId + "&coId=" +o.coId+"&surl="+Math.random();
window.alert(req);
//打开请求
xmlrequest.open("get", req, true);
xmlrequest.send(req);
}
[/code]