chenkaiadd 2012-06-03 22:26
浏览 410
已采纳

ajax传值在ie下可以得到 ,在Chrome和FireFox下得不到值。

问题描述:我用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]<!-- 显示省份 -->



proId="${province.id}" coId="${province.country.id }">

${province.name}

/c:forEach
[/color]
这里的${province.id}在jsp页面可以正确显示,但是把它当作参数传时
显示为undefined.
三、action里面部分代码如下。
[color=blue] HttpServletResponse response = ServletActionContext.getResponse();
HttpServletRequest request=ServletActionContext.getRequest();
response.setContentType("text/xml;charset=utf-8");
response.setHeader("Cache-Control", "no-cache");
PrintWriter out = response.getWriter();
String proId=request.getParameter("proId");
String coId=request.getParameter("coId");
System.out.println("proId"+proId);
System.out.println("coId"+coId);[/color]
在IE下运行时控制台可以将这两个参数打印出来,但是在Chrome下面运行时控制台没有把这两个参数打印出来。

程序运行之后 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下面也能成功得到参数。
不知道问题描述清楚没有?谁帮我解答一下吧,谢谢!

  • 写回答

3条回答 默认 最新

  • 晓星 2012-06-04 11:15
    关注

    在在Chrome和FireFox下它将自定义属性放在了attributes的数组里面,必须通过如下方式获取属性的自定义属性的值:
    o.attributes['proId'].value;
    而在ie下:
    利用你说的方式可以很方便的访问

    我查看了一下调用栈,其实他们都把自定义变量放在了一个attributes的数组里面如果想兼容又自己写的话,可以利用如下方式:
    o.attributes['proId'].value;获取值
    在firefox中,属性值大小写不敏感,ie中大小写敏感。

         我觉得也就是浏览器访问自定义属性的方式不一样导致了你的问题!
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥100 求数学坐标画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站