我的理解,用post就有跨域检查了。jsonp实际是在客户端动态添加了个script标签,然后将url指向要请求的地址,script是没有同源策略的。用这种办法自然只能是get了。

jsonp的本质是:动态创建script标签,然后通过他的src属性发送跨域请求,不同意然后服务器相应的数据格式为【函数调用foo(实参)】,所以在发送请求之前必须声明一个函数,并且函数的名字与参数中传递的名字要一致。

原理就是从服务端加载一段脚本(用script标签),然后把数据放到一个函数参数里面,再然后浏览器里定义的那个函数就能拿到那个数据了~

所以为啥不能发post 因为标签里只能发get

jsonp与ajax

虽然, jsonp 的实现跟 ajax 没有半毛钱关系,jsonp是通过 script的src实现的,但是最终目的都是向服务器请求数据然后回调,而且为了方便,所以jquery把 jsonp 也封装在了 $.ajax 方法中,调用方式与 ajax 调用方式略有区别。