关于IE浏览器不支持jQuery-ajax传值的问题

在jQuery中ajax的格式如下所示:

<!DOCTYPE HTML>
<html>
<head>
    <script src="http://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script>
    <script type="text/javascript">
        $(function(){
           
    
            //按钮单击时执行
            $("#testAjax").click(function(){
           
    
                //Ajax调用处理
                $.ajax({
                   type: "POST",
                   url: "test.php",
                   data: "name=garfield&age=18",
                   success: function(data){
           
    
                            $("#myDiv").html(<h2>+data+</h2>);
                      }
                });

             });
        });
    </script>  
</head>
<body>
    <div id="myDiv"><h2>通过 AJAX 改变文本</h2></div>
    <button id="testAjax" type="button">Ajax改变内容</button>
</body>
</html>

在使用jQuery的AJAX:get方法去检测数据是否存在时,会发现IE会出现不兼容的情况。 用AJAX:post方法时,使用Chrome/FireFox/IE均能出现正确的结果,但是在使用AJAX:get方法时,IE却不能返回正确的结果。 难道是数据超出了get方法的限制的长度,这个也不可能,我总共才传了一点点数据。排除。 网上一些网友说是IE缓存的问题,在请求数据后边加上随机数就行,比如加上时间数new Date().getTime()。 先前的代码中我已经添加了随机数,用的是“Math.random()”也不行。难道用时间比较靠谱? 那就改成获取时间试试,在参数后加“new Date().getTime()”后反复测试还是不行,真是百思不得其解!这个错误也排除了。 反复查看手册后发现请求的数据格式还是有一种JSON格式,如{foo:[“bar1”, “bar2”]} ,然后就按照这种格式书写,还真的返回了正确的查询结果。真不知道IE还有这点要求。

先前的格式:

type: "get",
data: "bid="+my_bid+"&name_cn="+name_cn+"&timeStamp="+new Date().getTime(),

改进后格式:

type: "get",
data: {
         
  bid:my_bid,name_cn:name_cn,timeStamp:new Date().getTime()},

在jQuery手册中是这样描述的: data Object,String 发送到服务器的数据。将自动转换为请求字符串格式。GET 请求中将附加在 URL 后。 查看 processData 选项说明以禁止此自动转换。必须为 Key/Value 格式。 如果为数组,jQuery 将自动为不同值对应同一个名称。如 {foo:[“bar1”, “bar2”]} 转换为 “&foo=bar1&foo=bar2”。

代码片段:

var siteUrl="http://blog.sina.com.cn/cnwyt"; 
jQuery.ajax({
    type: "get",
    url: siteUrl+"cosmetics/product/ajax_check?",
    //data: "bid="+my_bid+"&name_cn="+name_cn+"&timeStamp=" + new Date().getTime(),
    data: {
         
  bid:my_bid,name_cn:name_cn,timeStamp:new Date().getTime()},
    dataType: json,
    error: function (err) {
          
   
         alert(网络故障,请与管理员联系!) 
    },
    success: function (message) {
          
   
        if(message!=false){
            //ture的代码
        }else{
        //false的代码
    }
});

附:支持IE8的jQuery-ajax的写法

$.ajax({
    url: xianshi.php,
    type: get,
    dataType: json,
    data:{name:"hah",age:"14"}
    success: function (result) {
          
   
        var json = eval (result);
        // alert(json.length);
        var i=0;
        for(i;i<json.length;i++){
            //alert(result[0]);
            var app=document.createElement("li");
            app.innerHTML=json[i];
            var father=document.getElementById("con1");
            father.appendChild(app);
        }
    }
});
经验分享 程序员 微信小程序 职场和发展