- 主题:关于jsonp有个问题困扰很久了
【 在 paulwing 的大作中提到: 】
: 问题是,我没有写内部逻辑,怎么也可以调成功呢?我只是在jsonpCallback这个属性里定义了一个函数名而已。
: 另外,如果按你说的,我不定义这个函数名,由jq生成。那它的内部逻辑在哪里?
jq会自己生成一个随机的callback,你看下访问的url就可以发现了
--
FROM 36.102.210.*
【 在 shaolin 的大作中提到: 】
: 自己写啊。
: 比如jq的 success: function(param) {xxx}
: 就这个啊。
: ...................
假如我用jq生成的,它不是一个随机函数名吗?假如是:jQuery_1231231231231,那么这个随机函数名jQuery_1231231231231怎么跟success:function(param){xxx}这个函数扯上关系的?其实这就是我不明白的地方。按实际效果来看,jQuery_1231231231231的函数体也就是success的函数体,也就是说jQuery_1231231231231写完整是这样的:jQuery_1231231231231(){xxx}。但是我不明白这个jQuery_1231231231231的实现为什么是{xxx}。因为没见哪里将它的内部逻辑(也就是我说的函数体)定义成:(xxx)。
--
修改:paulwing FROM 111.198.98.*
FROM 111.198.98.*
比如,window.jQuery_1231231231231 = 你那个function
【 在 paulwing (paul) 的大作中提到: 】
: 假如我用jq生成的,它不是一个随机函数名吗?假如是:jQuery_1231231231231,那么这个随机函数名jQuery_1231231231231怎么跟success:function(param){xxx}这个函数扯上关系的?其实这就是我不明白的地方。按实际效果来看,jQuery_1231231231231的函数体也就是success
--
FROM 36.110.16.178
【 在 shaolin 的大作中提到: 】
: 比如,window.jQuery_1231231231231 = 你那个function
:
window.jQuery_1231231231231 = 你那个function 这个表达式是怎么来的呢?我的代码里没写过这个呀。看jqery里,也没找到这样的定义啊
--
FROM 111.198.98.*
callback function是你写的吧,比如success: function,假如function name 是 func1.
jquery 随机生成一个串,比如jq_aaaaaa1,然后jquery发一个请求,
就是xxxxx?callback=jq_aaaaaaa1,并且,jq把那个方法挂一下,比如window.jq_aaaaaa1 = func1.
然后就是调jq_aaa1()了,也就是你success里写的那个func1了。
真费劲啊。。。
【 在 paulwing (paul) 的大作中提到: 】
: window.jQuery_1231231231231 = 你那个function 这个表达式是怎么来的呢?我的代码里没写过这个呀。看jqery里,也没找到这样的定义啊
--
修改:shaolin FROM 36.110.16.178
FROM 36.110.16.178
【 在 shaolin 的大作中提到: 】
: callback function是你写的吧,比如success: function,假如function name 是 func1.
: jquery 随机生成一个串,比如jq_aaaaaa1,然后jquery发一个请求,
: 就是xxxxx?callback=jq_aaaaaaa1,并且,jq把那个方法挂一下,比如window.jq_aaaaaa1 = func1.
: ...................
哎,别嫌我费劲。我也是为了彻底搞透这个东西。你的解释,已经快接近我的疑问了。你现在说“jq把那个方法挂一下,比如window.jq_aaaaaa1 = func1. ”,这个“挂一下”,能给我讲讲吗?我其实关注的就是这里。我大概看了源码,没找到“挂”的操作,当然,我看源码很吃力,可能有遗漏。
--
FROM 111.198.98.*
// Install callback
window[ jsonpCallback ] = function( response ) {
responseContainer = [ response ];
};
【 在 paulwing (paul) 的大作中提到: 】
: 哎,别嫌我费劲。我也是为了彻底搞透这个东西。你的解释,已经快接近我的疑问了。你现在说“jq把那个方法挂一下,比如window.jq_aaaaaa1 = func1. ”,这个“挂一下”,能给我讲讲吗?我其实关注的就是这里。我大概看了源码,没找到“挂”的操作,当然,我看源码很吃力
--
FROM 106.120.251.*
看这里:
https://github.com/jquery/jquery/blob/7037facc2243ec24c2b36b770236c05d300aa513/src/ajax/jsonp.js#L61
还有这里:
https://github.com/jquery/jquery/blob/7037facc2243ec24c2b36b770236c05d300aa513/src/ajax/jsonp.js#L89
换句话说就是 先在 window 上“挂”了一个叫 callback 的 function
请求收到之后又把这个给去掉了嘛
【 在 paulwing (paul) 的大作中提到: 】
: 哎,别嫌我费劲。我也是为了彻底搞透这个东西。你的解释,已经快接近我的疑问了。你现在说“jq把那个方法挂一下,比如window.jq_aaaaaa1 = func1. ”,这个“挂一下”,能给我讲讲吗?我其实关注的就是这里。我大概看了源码,没找到“挂”的操作,当然,我看源码很吃力
--
FROM 221.217.172.100
感谢以上朋友的指点。现在已搞明白了。
--
FROM 123.126.85.*