关于jsonp机制与php后台处理jsonp

jsonp的本质是利用script标签的src属性进行跨域请求,只能用于get请求。

可以使用原生js进行jsonp跨域:

  
 
也可以使用jquery的 $.get $.getJson $.ajax 进行jsonp请求,使用 $.ajax方法如下:

 
这里必须指定参数 dataType : 'jsonp' 并且 jsonp : 'callback' 。这里的jsonp参数可以随便改,但是后台需原样返回。此时的success回调函数相当于原生js中script内部定义好的回调函数。

与一般的返回json字符串不同,jsonp返回的是一个函数调用,如果指定的callback=jsonpCallback,那么后台返回的是 'jsonpCallback(data)'

php后台可以写一个通用的方法处理jsonp返回:

function api_jsonp_encode($json)
    {
        if (!empty($_GET['callbak'])) {
            return $_GET['callbak'] . '(' . $json . ')'; // jsonp
        }
        return $json; // json
    }

部分代码摘自 http://justcoding.iteye.com/blog/1366102/ ,这篇文章讲得很详细



你可能感兴趣的:(前端)