Javascript 使用jQuery理解JSONP有困难
如果我希望从远程服务器获取数据,那么我认为JSONP是首选的工具。但我对我看到的一个例子感到困惑:Javascript 使用jQuery理解JSONP有困难,javascript,ajax,jquery,jsonp,Javascript,Ajax,Jquery,Jsonp,如果我希望从远程服务器获取数据,那么我认为JSONP是首选的工具。但我对我看到的一个例子感到困惑: <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script> <script type="text/javascript"> $(document).ready(function() { $.ajax({
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$.ajax({
dataType: 'jsonp',
data: 'p3=c',
jsonp: 'callback',
url: 'http://someserver.com/app?p1=a&p2=b',
success: function (data) {
console.log("data="+data);
$.each(data, function (i, r) {
console.log("i="+i);
console.log("r="+r);
});
},
});
});
</script>
所以我的第一个问题是:
(1) 应用程序所做的一切是否正确
(2) jQuery/JSONP实际上为我们做了什么
我假设jQuery将看到“jsonp”的数据类型,在DOM中插入一个脚本标记,然后浏览器将下载并执行该脚本。如果是这样,jQuery是否创建了函数jQuery1234567890,其实现是将参数传递给success函数
(3) 我的理解正确吗(我认为不正确)
谢谢,
保罗
(1) 应用程序所做的一切是否正确
是的,这是正确的JSONP格式
(2) jQuery/JSONP实际上为我们做了什么
通过在请求中放置&callback=jQuery1234567890
通知服务器应用程序需要JSONP
我假设jQuery将看到“jsonp”的数据类型,在DOM中插入一个脚本标记,然后浏览器将下载并执行该脚本。如果是这样,jQuery是否创建了函数jQuery1234567890,其实现是将参数传递给success函数
(3) 我的理解正确吗(我认为不正确)
是的,你的理解是正确的。它创建了一个带有jQuery1234567890
函数的script
,该函数在加载请求的脚本时调用。如您所述,参数接收数据并将其传递到$.ajax
内部,该内部调用成功
回调
(1) 应用程序所做的一切是否正确
是的,这是正确的JSONP格式
(2) jQuery/JSONP实际上为我们做了什么
通过在请求中放置&callback=jQuery1234567890
通知服务器应用程序需要JSONP
我假设jQuery将看到“jsonp”的数据类型,在DOM中插入一个脚本标记,然后浏览器将下载并执行该脚本。如果是这样,jQuery是否创建了函数jQuery1234567890,其实现是将参数传递给success函数
(3) 我的理解正确吗(我认为不正确)
是的,你的理解是正确的。它创建了一个带有
jQuery1234567890
函数的script
,该函数在加载请求的脚本时调用。如您所述,参数接收数据并将其传递到$.ajax
内部,该内部调用成功回调来自ajax
文档的jsonp
选项:
重写jsonp中的回调函数名
要求将在中使用此值而不是“回调”
url中查询字符串的“callback=?”部分。所以
{jsonp:'onJSONPLoad'}将导致将'onJSONPLoad=?'传递给
服务器
因此,使用jsonp:'callback'
用callback
覆盖callback
,实际上什么也不做
您看到的其他内容是由jQuery生成的,这样您就不必自己做了。您可以像jquery中的任何其他ajax请求一样简单地处理此请求,而不必担心jsonp的实现。来自jsonp
选项的ajax
文档:
重写jsonp中的回调函数名
要求将在中使用此值而不是“回调”
url中查询字符串的“callback=?”部分。所以
{jsonp:'onJSONPLoad'}将导致将'onJSONPLoad=?'传递给
服务器
因此,使用jsonp:'callback'
用callback
覆盖callback
,实际上什么也不做
您看到的其他内容是由jQuery生成的,这样您就不必自己做了。您可以像jquery中的任何其他ajax请求一样简单地处理此请求,而不必担心jsonp的实现。Hi Paul,please Hi Paul,please
jQuery1234567890([{"x":"100","y":"101"},{"x":"200","y":"201"}])