解析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>
就报错退出了
[解决办法]
本帖最后由 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();
}