0
當我執行eval函數時,它不會將我的json響應轉換爲對象,它只會破壞我的代碼。我試着解析prototype.js和JSON2.js無濟於事,請解釋我在這裏做錯了什麼?爲什麼不是我的eval將json字符串轉換爲對象
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Inventory Management</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
<script src="call.js" type="text/javascript"></script>
<script src="prototype.js" type="text/javascript"></script>
</head>
<body>
<div>
<p id="resp" >new</p>
<script type="text/javascript">
var xhr;
var results=getPlants(xhr,results);
var plants;
function getPlants(xhr,results){
try {
xhr=new XMLHttpRequest();
}catch(microsoft){
try{
xhr=new ActiveXObject("Msxml2.XMLHTTP");
}catch(othermicrosoft){
try{
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}catch(failed){
xhr=false;
alert("ajax not supported");
}
}
}
xhr.onreadystatechange= function() {
if(xhr.readyState==4 && xhr.status==200) {
results = xhr.responseText;
}
}
xhr.open("GET","db_interactions.php",true);
xhr.send(null);
alert("sent");
return results;
}
plants = eval('('+results+')');
document.write(typeof(plants));
</script>
</div>
</body>
</html>
響應來自可信來源,當我打印getPlants定義之外的結果時,它會返回正確的數據,我試圖弄清楚的是我如何使用eval函數不會正確反序列化數據,並序列化我使用的數據php_encode – 2010-01-22 18:23:07
您不知道「受信任」源是否在其他地方存在導致您使用XSS的漏洞。總是最小化攻擊面。另外,JSON解析器可能比'eval'快(在我的Safari上''eval'解析JSON的時間比'JSON.parse'多36%。 – kennytm 2010-01-22 18:49:09