c*********e 发帖数: 16335 | 1 【 以下文字转载自 Java 讨论区 】
发信人: Donier (仙童), 信区: Java
标 题: JQuery
发信站: BBS 未名空间站 (Fri Oct 26 12:39:42 2012, 美东)
我是newbie,请教各位大侠,如何用jQuery/javascript fetch google stock data?
---------------------------
---------------
why no response?
thanks in advance... | d*****l 发帖数: 300 | 2 you can not send cross-domain xhr request in javascript | D****r 发帖数: 309 | 3 But if I change:
Url = "http://google.com/finance/info?infotype=infoquoteall&q=SHMN,^DJI,^IXIC,^BSESN,^SPX,^FTSE&callback=?"
then I can get the alert(data); print to screen
why I cannot make it for the csv file?
请详解,谢! | d*****l 发帖数: 300 | 4 Then I assume you have server side proxy in place, in this case, it should
be data format issue. getJSON() would expect json format not csv format. | D****r 发帖数: 309 | 5 I think you are right.
But how could I get and process csv file with Javascript/jQuery?
【在 d*****l 的大作中提到】 : Then I assume you have server side proxy in place, in this case, it should : be data format issue. getJSON() would expect json format not csv format.
| d*****l 发帖数: 300 | 6 I never used jQuery, but for csv data, you should use some method that
retrieve plain data. You may do quick search for that, jquery definitely
should have something like that.
【在 D****r 的大作中提到】 : I think you are right. : But how could I get and process csv file with Javascript/jQuery?
| x****u 发帖数: 41 | 7 是这样的,javascript不允许跨域调用xmlhttprequest请求,但是有一种办法变通,就
是叫jsonp的办法,实际上它是动态加载了一个javascript,比如你的例子:
http://google.com/finance/info?infotype=infoquoteall&q=SHMN,^DJ
注意后面一个参数是问号,实际上在调用$.getJSON的时候是这样的:
1,定义一个函数,比如func1
2,将url修改为http://google.com/finance/info?infotype=infoquoteall&q=SHMN,^DJI,^IXIC,^BSESN,^SPX,^FTSE&callback=func1
3,动态创建一个script node,src为http://google.com/finance/info?infotype=infoquoteall&q=SHMN,^DJI,^IXIC,^BSESN,^SPX,^FTSE&callback=func1,相当于动态添加了一个html code
4,当这个js加载完之后,会执行这个func1函数,然后把内容作为参数(这个你可以直
接访问http://google.com/finance/info?infotype=infoquoteall&q=SHMN,^DJI,^IXIC,^BSESN,^SPX,^FTSE&callback=func1,看看里面的内容),然后func1再回调你的函数实现数据传递
所以这个本质上需要服务器端的支持(google的这个url明显是支持的),而不是任意
一个url你都可以拿到它的内容,这个可以不受跨域的限制,但是和xmlhttprequest还
是有些不一样的地方:
1,xmlhttprequest可以直接拿到返回的内容,而jsonp不行,jsonp实际上是运行
javascript
2,xmlhttprequest在访问失败的时候仍然可以回调,jsonp不行,如果是返回了非
javascript语法的内容,浏览器还会报运行错。 | j*a 发帖数: 14423 | 8 哇 厉害
【在 x****u 的大作中提到】 : 是这样的,javascript不允许跨域调用xmlhttprequest请求,但是有一种办法变通,就 : 是叫jsonp的办法,实际上它是动态加载了一个javascript,比如你的例子: : http://google.com/finance/info?infotype=infoquoteall&q=SHMN,^DJ : 注意后面一个参数是问号,实际上在调用$.getJSON的时候是这样的: : 1,定义一个函数,比如func1 : 2,将url修改为http://google.com/finance/info?infotype=infoquoteall&q=SHMN,^DJI,^IXIC,^BSESN,^SPX,^FTSE&callback=func1 : 3,动态创建一个script node,src为http://google.com/finance/info?infotype=infoquoteall&q=SHMN,^DJI,^IXIC,^BSESN,^SPX,^FTSE&callback=func1,相当于动态添加了一个html code : : 4,当这个js加载完之后,会执行这个func1函数,然后把内容作为参数(这个你可以直 : 接访问http://google.com/finance/info?infotype=infoquoteall&q=SHMN,^DJI,^IXIC,^BSESN,^SPX,^FTSE&callback=func1,看看里面的内容),然后func1再回调你的函数实现数据传递
| D****r 发帖数: 309 | 9 多谢详解!学习了。。。
那是不是说,必须用xmlhttprequest的方法来下载historical data再提取数据呢?
【在 x****u 的大作中提到】 : 是这样的,javascript不允许跨域调用xmlhttprequest请求,但是有一种办法变通,就 : 是叫jsonp的办法,实际上它是动态加载了一个javascript,比如你的例子: : http://google.com/finance/info?infotype=infoquoteall&q=SHMN,^DJ : 注意后面一个参数是问号,实际上在调用$.getJSON的时候是这样的: : 1,定义一个函数,比如func1 : 2,将url修改为http://google.com/finance/info?infotype=infoquoteall&q=SHMN,^DJI,^IXIC,^BSESN,^SPX,^FTSE&callback=func1 : 3,动态创建一个script node,src为http://google.com/finance/info?infotype=infoquoteall&q=SHMN,^DJI,^IXIC,^BSESN,^SPX,^FTSE&callback=func1,相当于动态添加了一个html code : : 4,当这个js加载完之后,会执行这个func1函数,然后把内容作为参数(这个你可以直 : 接访问http://google.com/finance/info?infotype=infoquoteall&q=SHMN,^DJI,^IXIC,^BSESN,^SPX,^FTSE&callback=func1,看看里面的内容),然后func1再回调你的函数实现数据传递
| x****u 发帖数: 41 | 10 no, xmlhttprequest有跨域限制,所以如果对方网站不提供jsonp支持的话,唯一的办
法就是在你自己的网站域名下设置一个代理,相当于请求发给自己网站,网站后台再去
fetch数据之后返回。
【在 D****r 的大作中提到】 : 多谢详解!学习了。。。 : 那是不是说,必须用xmlhttprequest的方法来下载historical data再提取数据呢?
|
|