第4课:Ajax

Ajax是JS的精髓所在,故单独拿出来讲讲
AJAX = 异步 JavaScript和XML
简短地说,在不刷新整个网页的情况下,AJAX通过后台加载数据,并在网页上进行显示
给人的感觉更加流畅自然,不会有刷新页面的停顿感,用户体验更好,这也是ajax风靡的原因之一

拿邂逅jquery一节中的jquery代码来说
$.ajax({//ajax标记
    url: 'index.php?a=godeye',//ajax要请求的服务端地址
    type: 'POST',//数据传输方式为post,如果为get 这里值为get,get方式不用传递data参数,直接把参数拼入url
    data:{//传入参数,注意格式
	id : id,
	name : name
    },
    dataType: 'json',//数据返回值类型,一般设置为json
    timeout: 8000,//请求超时时间
    error: function() {//请求出错时的处理
	alert('提交超时,请重试');
    },
    success: function(data) {//请求结束,服务端程序返回数据之后的回调函数
	if (data.code == 1000) {//这里可以取到服务端返回的数据,进行下一步处理
	    alert('ok');
	} else {
	    alert('fail');
	}
    }
});
仔细看下上面的注释,相信你会对ajax的操作理解更进一步

ajax跨域就用jsonp来解决,所谓跨域就是数据提供方和数据展示方不在同一个域名,当然了,这里说的跨域也只是双方在不同的子域名,主域名还是一样的
jsonp的使用方式也很简单,在上面ajax代码里面修改dataType: 'jsonp',并且在这一行代码下面增加一行callback:'json_callback',  来处理回调函数
其中json_callback是回调函数名
以PHP为例,如果这里设置了这个名字,在服务端的返回值里,数据格式为
$_REQUEST['callback'] . '(' . htmlspecialchars(json_encode($res), ENT_NOQUOTES) . ')'
也就是说,要用这个callback名字拼在json返回值的前面,json返回值用括号包裹