代码如下:
复制代码 代码如下:
无标题文档
click
其中ajax6.asp为
复制代码 代码如下:
response.write(“{name:'peter',age:18}”);
%>
为什么获取不了呢?,我想获取asp的json。
解决的关键问题是:key和value需要双引号,如下:
复制代码 代码如下:
response.write(“{“”name”:”peter”,”age”:”18″”}”)
jquery中常用getjson来调用并获取远程的json字符串,将其转换为json对象,如果成功,则执行回调函数。原型如下:
jquery.getjson( url, [data], [callback] ) 跨域加载json数据。
url: 发送请求的地址
data : (可选) 待发送key/value参数
callback: (可选) 载入成功时的回调函数
主要用于客户端获取服务器json数据。简单示例:
服务器脚本,返回json数据:
复制代码 代码如下:
// $.getjson.php
$arr=array(name=>zhangsan, age=>20);
$jarr=json_encode($arr);
echo $jarr;
注意两点:第一:在返回客户端之前,先用php函数json_encode将要返回的数据进行编码。第二:返回到客户端用的是echo,而不是return。
下面是核心的客户端代码:
复制代码 代码如下:
由于在php中是用json编码返回值,所以此处必须用getjson去调用php文件,从而获取数据。同时可以注意到,经由getjson得到的数据已经变成了一个对象数组,可以用response.name,response.age很直观的获取返回值。
jquery提供了$.getjson的方法,让我们可以实现跨域ajax请求,但jqueryapi上的内容实在太少,如何用$.getjson,请求网站应该返回怎样的数据库才能让$.getjson获取到,下面我就用一个实际例子来说明下。
后端是用php的,以下代码主要实现的一个功能就是提供一个预约登记的接口,需要传入的数据分别有:用户姓名、联系电话和地址:
复制代码 代码如下:
/*预约登记 执行 接口*/
case yuyue_interface:
$name = trim($_get['name']);
$phone = trim($_get['phone']);
$addr = trim($_get['addr']);
$dt = date(y-m-d h:i:s);
$cb = $_get['callback'];
if($name == || $name == null){
echo $cb.({code:.json_encode(1).});
}elseif($phone == || $phone == null){
echo $cb.({code:.json_encode(2).});
}elseif($addr == || $addr == null){
echo $cb.({code:.json_encode(3).});
}else{
$db->execute(insert into tb_yuyue (realname,telphone,danwei,dt,ischeck) values ('$name','$phone','$addr','$dt',0));
echo $cb.({code:.json_encode(0).});
}
exit;
break;
接着就是前端的处理了:
复制代码 代码如下:
$(document).ready(function(){
//以下3个为预约登记需要的参数
var name = name; //varchar类型,长度最多为8位(4个汉字)
var phone = phone; //varchar类型,长度为11位
var addr = addr; //varchar类型,长度最多为500位(250个汉字)
$.getjson(http://请求网站地址/data.php?ac=yuyue_interface&name=+name+&phone=+phone+&addr=+addr+&callback=?, function(data){
if(data.code==1){
//自定义代码
alert(姓名不能为空);
}else if(data.code==2){
//自定义代码
alert(手机不能为空);
}else if(data.code==3){
//自定义代码
alert(所在单位不能为空);
}else{
//自定义代码
alert(预约成功);
}
});
});
需要注意的是,在后端php代码里,必须把传递进来的 &callback=? 也输出来,如:
复制代码 代码如下:
$cb = $_get['callback'];
echo $cb.({code:.json_encode(4).});
以上就是一个简单的$.getjson试验,通过这个试验,我们可以学到如何用$.getjson,也能学到如何做一个接口让别人跨域请求。