日期:2014-05-16  浏览次数:20329 次

php查询mysql中的数据,并将结果返回为JSON格式,提取JSON中的数据,写入页面不同的id号中

有这样一个问题:用AJAX返回数据时,怎么提取其中的信息,并将其写入网页的不同部分?
在W3CSCHOOL中提到过用AJAX返回的数据用JSON数据格式,本人使用的是PHP作为后台脚本。
一开始自己拼装JSON格式的数据,但是效果不好,后来查资料用了PHP中json_encode()函数,

$str是要待处理的数据,使用下面的语句即可输出json格式的数据,

其中JSON_NESCAPED_UNICODE说的是使用UNICODE格式的编码,

手册上说“该函数只能接受 UTF-8 编码的数据”,格式有很多种

echo json_encode($row,JSON_UNESCAPED_UNICODE);

前台页面发起ajax请求,核心部分是处理ajax返回的数据xmlHttp.respondText,

利用这条语句处理 txt=xmlHttp.responseText ;var obj = eval ("(" + txt + ")");,其中eval函数是关键。

eval() 函数使用的是 JavaScript 编译器,可解析 JSON 文本,然后生成 JavaScript 对象。必须把文本包围在括号中,这样才能避免语法错误:

ajax请求的代码如下:

var xmlHttp=null
function get_pic(str)
{ 
	/*search the file in mysql table pydot and pydot_g,
	then give the result to front page.start ajax request*/
	xmlHttp=GetXmlHttpObject()
	if (xmlHttp==null)
	 {
	 alert ("Browser does not support HTTP Request")
	 return
	 }
	var url="Public/Js/json.php";
	url=url+"?q="+str.innerHTML
	url=url+"&sid="+Math.random()
	//alert(url)
	xmlHttp.onreadystatechange=stateChanged 
	xmlHttp.open("GET",url,true)
	xmlHttp.send(null)
}

function stateChanged() 
{ 
var txt,x;
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
 { txt=xmlHttp.responseText ;
   //alert(txt)
	var obj = eval ("(" + txt + ")");
	document.getElementById("other").innerHTML=obj.other;
	document.getElementById("title").innerHTML=obj.title;
 } 
}

function GetXmlHttpObject()
{
var xmlHttp=null;
try
 {
 // Firefox, Opera 8.0+, Safari
 xmlHttp=new XMLHttpRequest();
 }
catch (e)
 {
 //Internet Explorer
 try
  {
  xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
  }
 catch (e)
  {
  xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
 }
return xmlHttp;
}

从代码中我们可以看出obj.title 提取出了返回文本中的title信息,并将其写入页面中id='title'的元素中。