ajax跨域问题,这里使用 jsonp 来完成,该方式有一个弊端,在提交POST请求的时候,它依然会使用GET的方式传递参数,这点目前还没有解决。
首先 得了解JSONP这种类型返回的值的格式,(callback(数据)) 这里并不像普通的HTTP请求那样,只要服务端返回数据就可以直接将该数据拿来使用,它的区别在于 JSONP 会将数据放到一个回调方法里面。
其次 我们来完成服务端的数据处理
//这里使用PHP语言来处理服务端的数据
/**
* 获取数据
* 2014-12-25
* comfiger
**/
public function getData(){
$jsonCallback = $_GET['jsonCallback']; //回去在客户端JS中定义的回调处理方法名称
$array = array(
'name' => 'comfiger',
'age' => '25',
'sex' => '男',
'job' => '服务端软件开发'
);
//将数据封装城 JSON 格式
$json = json_encode($array);
//将JSON数据输出到 $jsonCallback 方法中
echo "$jsonCallback($json)";
}
最后 在客服端访问服务端数据
//使用ajax方式调用
$.ajax({
url: 'http://192.168.0.105/getData?jsonCallback=?',
dataType: 'jsonp',
jsonp: 'callback', //jsonp回调处理函数,默认为: callback
type: 'get',
success: function(data){
//console.log('jsonpData: ' + JSON.stringify(data));
//这里获取到的值为: callback({name: 'comfiger', age: '25', ....});
//这样看返回值就清楚的明白调用成功后,它会继续调用 callback方法
}
});
//定义回调callback方法处理
var callback = function(data){
console.log('callbackData: ' + JSON.stringify(data));
//do something...
}
更多信息请查看IT技术专栏