首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Ajax >

解析JSON时,eval步骤不执行

2013-01-02 
解析JSON时,eval方法不执行。具体代码如下script typetext/javascript var xmlHttp //端发送异步的ht

解析JSON时,eval方法不执行。
具体代码如下



<script type="text/javascript"> 
var xmlHttp;
 //端发送异步的http请求  
    function createXMLHttpRequest()       
    {                         
          var browser = navigator.appName;  
          
          if(browser == "Microsoft Internet Explorer")   
          {  
                //如果用户使用IE,就返回XMLHTTP的ActiveX对象  
                xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");   
          }  
          else  
          {  
                //否则返回一个XMLHttpRequest对象  
                xmlHttp = new XMLHttpRequest();   
          }  
    }  
function startRequest()
{
    createXMLHttpRequest();
var str = "HELLO";
    try
    {
str="1";
         var url = "http://m.weather.com.cn/data/101020100.html";  
          xmlHttp.open("GET",url, false); 
  str="2";
         xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");  
 str="3";
           var result = xmlHttp.responseText; 
   if(result!=null){
str="31";
   }
           var json = eval("(" + result + ")");
   str="4";
           var myCondition = json.weather1;
   str="5";
//var myUrl = json.img1+".gif";
var myTemp = json.temp1;
var str1= "<span style='font-size:48px; color:fff'>"+ myTemp +"</span>";
var str2= "<span style='font-family:创艺简魏碑;font-size:48px; color:fff'>"+ myCondition +"</span>";
var str3="<br>";
str=str3+str1+str3+str2;
//document.getElementById("img1").src = myUrl;
xmlHttp.send();
    }
    catch(exception)
    {
        alert(str);
    }
return str;
}
</script>


弹出 31  如果把 31 的去掉  弹出是 3

执行到var json = eval("(" + result + ")");



就报错退出了
[解决办法]
本帖最后由 showbo 于 2012-11-01 11:46:54 编辑 同步要调用send后才能使用xhr对象的属性。而且你的代码明显跨域了,通过http访问后就出错了


本地浏览ie可以跨域在使用acx创建的xhr对象,使用xmlhttprequest无法跨域

    var xmlHttp;
    //端发送异步的http请求  
    function createXMLHttpRequest() {
        var browser = navigator.appName;

        if (browser == "Microsoft Internet Explorer") {
            //如果用户使用IE,就返回XMLHTTP的ActiveX对象  
            xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        else {
            //否则返回一个XMLHttpRequest对象  
            xmlHttp = new XMLHttpRequest();
        }
    }
    function startRequest() {
        createXMLHttpRequest();
        var str = "HELLO";
        try {
            str = "1";
            var url = "http://m.weather.com.cn/data/101020100.html";
            xmlHttp.open("GET", url, false);
            str = "2";
            xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
            str = "3";
            xmlHttp.send();/////////////////////send后才能调用属性
            var result = xmlHttp.responseText;
            if (result != null) {
                str = "31";
            }
            var json = eval("(" + result + ")").weatherinfo;///////所有信息在weatherinfo下面
            str = "4";
            var myCondition = json.weather1;
            str = "5";
            //var myUrl = json.img1+".gif";
            var myTemp = json.temp1;
            var str1 = "<span style='font-size:48px; color:fff'>" + myTemp + "</span>";
            var str2 = "<span style='font-family:创艺简魏碑;font-size:48px; color:fff'>" + myCondition + "</span>";


            var str3 = "<br>";
            str = str3 + str1 + str3 + str2;
            //document.getElementById("img1").src = myUrl;
            /////////xmlHttp.send();
        }
        catch (exception) {
            alert(str+'\n'+exception);
        }
        return str;
    }

    window.onload = function () {
        document.getElementById("ShowHere").innerHTML = startRequest();
    }

热点排行