谁能帮我看一下,为什么java输出函数数里输出的表格下面有乱码,还有为什么排序部分在运行的时候进不去?

WP Thumbnails 的问题反馈
反馈问题的正确方式:
问题描述不清,导致彼此浪费很多时间,所以建议尽量按如下格式留言反馈:
问题描述:请务必详细描述,正确使用标点符号、断行,行文逻辑尽量清晰一点,说不清楚可以说详细一点,就怕你话少。
与问题有关的网页地址或者截图:如http://XXX.com/,你不告诉我网页地址,我怎么排查原因?其他难以用语言描述的状况,请截个图给我看。
后台预览效果:后台的预览是否异常?如果你的首页缩略图有问题,那么你必须告诉我后台首页缩略图预览效果怎么样;如果你的文章缩略图有问题,你必须告诉我后台对应的文章缩略图预览效果怎么样。
你所使用的主题:如果你觉得和你的主题有关系,请告诉我你使用的主题名字。
不要隐瞒:如果你用WP-Thumbnails一直正常,突然哪天出问题了,反馈的时候请尽量回忆你最近做了什么操作,如安装了哪些插件、是否修改了我的插件代码等等,请真诚以待,不要隐瞒相关的操作,你提供的信息越多,就越能帮助我及时解决问题。
提问前,请麻烦看看下面的常见问题列表,拜托!
常见问题列表:
插件工作原理是什么?
答:插件自动维护一个自定义域 ta-thumbnail,当日志被访问时,插件扫描日志内容,提取图片地址,保存在ta-thumbnail中,多张图片以英文分号;隔开。之后插件调用WordPress自带的缩略功能制作各种尺寸的缩略图。
请点开日志!
很有可能一开始你看不到任何缩略图,请逐一点开日志。因为就在你点击访问文章的那一刹那,而不是保存文章的那一刹那,WP-Thumbnails开始了缩略图的检测。每篇文章只要被访问到一次就足够了。
如果你启用了首页缩略图,就会发现只要打开首页,首页的所有文章都会被自动访问到,首页每篇文章的缩略图都会自动展示出来,从而使得你不必逐一点开日志。
什么是自定义域?
答:你发表日志时就可以看到编辑框下面的自定义域,你可以新建、删除和更新自定义域:
我发现自定义域的值为 NoMediaFound ,什么意思?
答:No Media found , 意思是插件没有在该日志找到图片或者视频(3.1.0版本之前为NoPicturesFound)。
没有找到图片的原因包括:
真的没有图片;
有图片,但该图片地址已经失效,故无法为之制作缩略图;
有图片,但该图片来自国外相册,在中国部分地区被屏蔽,故无法为之制作缩略图;
有图片,但该图片不是jpg、jpeg、gif、png格式,被插件无视;
有图片,但图片的文件名太怪异了,包含了怪异的字符(如中文),被插件无视;
有图片,但太小了,被插件无视;(有的人把首页缩略图的尺寸设置得无比巨大,然后埋怨怎么没有缩略图,真无语)
有图片,但该图片是外链图片,并且空间商禁用了远程访问外链网站(见下文)。
我把自定义域 ta-thumbnail 删了,怎么办?
答:删了就删了,没事,插件发现 ta-thumbnail 删了后会自动补上,并重新提取图片。有时候出了问题,还真需要你把 ta-thumbnail 给删了呢。
你还可以自己编辑 ta-thumbnail 的值(多张图片地址以英文分号隔开)。
尤其是唯独某一篇文章缩略图不正常时,试试删除该文章的ta-thumbnail,往往问题就自然得到解决。
我在一篇已经发表过的文章中补充了图片,但是插件没有显示这篇文章的缩略图?
答:对于已经发表过的文章,本插件不会再次检查缩略图。这个时候,你需要删除这篇文章的自定义域ta-thumbnail,插件就会重新检查和生成缩略图。
我计划在下一版本增加自动重新检测的功能。
无法保存远程(外链)图片,即无法本地化?
答:有的博主反映:外链图片无法本地化,无法提取缩略图。
原因:你的空间商禁用了远程访问。你的网站php环境没有开通 file_get_contents 这个函数。有些主机服务商把php的 allow_url_fopen 选项是关闭了,故无法使用file_get_contents来获取远程web页面的内容。
如果你熟悉PHP,可以编辑本插件的ta_save_pic.php文件,找到“file_get_contents”这个字符串,把它前面的字符“@”去掉,然后再测试远程图片,如果在网站顶部出现类似如下的信息:
Warning: file_get_contents() [function.file-get-contents]: URL file-access is disabled in the server configuration in .../wp-content/plugins/wp-thumbnails/ta_save_pic.php on line 21
那么说明你的网站的确没有开通 file_get_contents 这个函数。
空间商禁用了远程访问外链网站,怎么办?
答:联系你的空间商,请他开通php的 allow_url_fopen 选项。
插件提取视频缩略图失败?
插件没有找到视频缩略图时,自定义域 ta-thumbnail 的值会显示为NoMediaFound,这是因为:
目前只支持优酷、土豆、酷6三家网站的视频;
请勿使用插件smart video插入视频代码,因为它用的是它自己定义的格式,WP-Thumbnails识别不了,请手动插入视频网站给出的分享代码。
空间商禁用了远程访问外链网站(见上文)。
视频网站的分享代码经常变动,目前只支持最新的分享代码,只要文章中出现类似如下的内容,插件就会提取视频缩略图:
http://player.youku.com/player.php/sid/XMTAxNjk4OTMy/v.swf
http://v.youku.com/v_show/id_XMTAxNjk4OTMy.html
http://player.ku6.com/refer/sPysxoPI8pe51o5c/v.swf
http://v.ku6.com/show/sPysxoPI8pe51o5c.html
http://www.tudou.com/v/_ke1lzCnBYw/v.swf
http://www.tudou.com/programs/view/_ke1lzCnBYw/
其中,粗体字部分必须出现。
如果你文章中的视频代码不符合上面6种情况,怎么办?——很简单,到视频网站复制最新的分享代码,重新粘贴到你的文章中。
我可以直接在自定义域 ta-thumbnail 中添加视频网址吗?
答:不可以。视频缩略图格式比较复杂,只能由WP-Thumbnails自动提取。
我不会放置代码,该怎么办?
答:大多数情形下,你不需要放置代码:
对于页面缩略图,插件支持自动启动。
对于随机文章缩略图、相关文章缩略图、全排列缩略图,插件支持自动插入到文章内容后面。
对于随机文章缩略图、相关文章缩略图、最新文章缩略图、最热门文章缩略图,插件支持从侧边栏小工具启动。
但是,自动启动的效果可能并不能让你满意,比如和周围内容不协调啦,比如出现的位置不对啦,甚至自动启动根本没效果啦。这个时候就需要你自己选择合适的位置放置代码了。
如何放置代码?
WordPress 的外观是由主题 (theme) 实现的,所以代码必须放置在主题文件中,以WordPress默认主题为例,主题文件中比较重要的有:
索引页模板 index.php : 决定首页的内容;
文章页面模板 single.php :
决定单篇文章的内容;
文章索引模板 archive.php : 决定除首页外的其他页面的内容;
边栏模板 siderbar.php : 决定侧边栏的内容。
不同主题的文件可能不一样。
我启用了插件,却什么效果都没看到?
答:可能的原因:
你既没在后台勾选自动启动,也没有放置代码;
你第一次启动插件后,没有跑回首页点击几篇文章。根据插件工作原理,日志必须在插件安装被人点击访问一次才会生成缩略图,所以一开始可能没有缩略图,需要你点点自己的日志。
自动启用页面缩略图后发现没有效果,原因在于那个页面原来就没有显示文章内容或摘要,比如鸟类网的分类页面
,这个页面的每篇文章只显示了标题、作者、所属分类和标签,没有显示文章中的内容,而缩略图是必须自动插入到内容的,所以没有效果。怎么办?只能手动放置代码。
以上都不是,请在后台打开一篇本该出现图片的日志,检查该日志下的自定义域ta-thumbnail的值是多少,如果是 NoMediaFound(或者NoPicturesFound) ,说明插件没能成功提取图片,恭喜你,发现了一个bug,请拷贝一篇日志的html代码到我邮箱,以方便我查找原因。
我“新添加页面”,然后加入代码完全没有效果,不管是在“可视化”还是“HTML”代码里面?
答:那里不是放代码的地方!
目前来说,在后台“添加新页面”,在页面内容编辑框中加入代码是错误的,不管是放在“可视化”还是“HTML”都是错误的,插件代码必须放置在模板文件中!当然,我在插件下一版会考虑直接通过“添加新页面”的方式使插件生效。
那么如何创建类似呢?我在这篇文章中详细地说明了如何使用模板文件创建一个自定义页面:
我的页面缩略图出现两份一模一样的重复显示?
答:因为你既在后台勾选了自动启用页面缩略图,而且又在页面模板手动放置了代码,两个同时起作用了。所以请清除以前放过的代码,或者,后台不要勾选自动启用。
随机缩略图显示的数量不够?
答:比如你设置了6张,却只显示了2张。可能的原因:随机缩略图默认不显示视频缩略图。视频缩略图如果要在文章缩略图中显示,必须在后台勾选“视频缩略图随文章缩略图显示”。如果你纯图片(没有视频)的文章数超过了6篇,却最终显示少于6张图片,那么恭喜你找到一个bug,赶快反馈吧。
我的缩略图和标题之间间隔太大了?
答:这种情况只在IE6下出现,因为在缩略图后面,我使用了&br /&来换行,以便在新的一行显示标题。在IE6下,这个换行符&br /&有时会单独占一行,所以看起来缩略图和标题的间隔就很大了。如:
缩略图和标题间距过大,看起来很不协调。
最简单的解决办法:在插件后台将图片间距设大一点。如原来是10像素,改为20像素就行了,这样换行符会待在图片右边,而不是单独占一行。请看图片间距设大一点后的效果:
这下就正常了(IE6下)
我想让标题宽度大于图片宽度,怎么弄?
答:很简单。后台将图片间距设得足够大,比如的图片是75像素,而你将间距设为25像素,那么最终标题宽度就是75+25=100像素。不过要注意,如果你在侧边栏显示,不要让标题宽度超过侧边栏宽度哦。
插件是不是太大了?
答:大有两方面:一是功能强大;二是臃肿高消耗。WP-Thumbnails功能极为强大,但一点也不臃肿,资源消耗非常少。虽然功能很多,但各个功能都是独立开来的,基本上任何一个功能,只要你没有用到它,它就不会占用资源。并不是像你所想像的,以为哪怕你只使用一种缩略图,都会把所有资源占用。
我担心插件消耗资源?
答:插件仅仅扫描一次日志,一劳永逸,非常高效,通过访问自定义域 ta-thumbnail 并自动填充维护该字段,大大减少了数据库访问,数据库访问开销几乎可以不计。
经常有人反馈说找不到缩略图,那是因为你是在发布文章之后才补充的图片,此时wp-thumbnails已完成对这篇文章的检测,之后再改动这篇文章,wp-thumbnails也不理会,此时只要删除该文章的自定义域ta-thumbnail,即可让插件重新检测到缩略图。
有人说这是wp-thumbnails的bug,我不这么认为。相反,我认为正是由于仅仅对每篇文章自动检测一次,才保持了插件的极低的数据库开销。
我不敢说 WP-Thumbnails 在所有博客上都速度飞快,毕竟大家主机环境各不相同。但以我为例,一万多篇文章,超过十万张图片,WP-Thumbnails 速度非常快,我想,WordPress博客界,大概找不出几家文章数和图片数都超过的吧。
可我还是发现有时速度很慢?
答:这种情况非常少见。如果你使用了外链图片,而且该外链图片所在网站无法连通,WP-Thumbnails 在第一次扫描日志时可能会消耗多一点时间用于下载远程图片。正如前面所说,插件只扫描一次,非常高效,扫描后不会影响网站速度。
我发现如果一篇文章中的图片超过20张,插件就会出错?
答:也许真的是图片太多了!
你在WP-Thumbnails后台将“缩略图来源 : 来自任意图片 (每篇日志至多提取20张)”改成 10张 以下,注意,即使你勾选了“来自第一张图片”,也需要将“每篇日志至多提取20张”改得尽可能小。
我发现打开单篇日志不会生成缩略图,必须在首页或分类/标签页面显示一次,才能生产缩略图?
答:你的日志模板文件single.php没有包含wp_head(一般的模板文件都会包含)。解决办法:在single.php的任意位置放置代码:&?php update_wp_thumbnails_meta(); ?&
什么是外链缩略图?
答:“外链图片/站外图片/远程图片”是指你的日志中使用了其他网站的图片,包括网络相册的图片。外链缩略图则是指直接调用Yupoo、Flickr、Picasa的缩略图。
相反的概念叫做“站内图片/本地图片”,也就是存在你自己网站的图片,包括你写日志上传的图片和FTP上传的图片。
为什么我的Yupoo缩略图变形了?
答:因为你选择了“使用外链缩略图”并且缩略图大小不是75*75,目前Yupoo只提供了75*75的正方形缩略图。Yupoo还提供宽度为100,240,500像素的保持原始比例的缩略图。
由缩略图打开大图时,我想实现幻灯片一样的效果?
答:这个效果叫做“lightbox”,请另外安装一个提供lightbox效果的插件,这样的插件非常之多,很容易找到。
插件不支持什么样的图片?
答:目前插件只支持三种后缀格式:jpg(包括jpeg)、gif、png,后缀可大写。
很抱歉不支持bmp和其他格式,bmp体积过大,不适合博客展示,请换用jpg图片。
另外:图片文件名中包含空格,标点符号,非英文字符的都无法识别。个人精力有限,只能满足最普遍的要求,请见谅。
能支持调用其他外链相册的缩略图吗?
答:除了Yupoo、Flickr、Picasa,其他一概不支持,当做普通的外链图片处理。这里推荐,60元/年的VIP,对一般博客来说,完全够用,希望国人能适应这种并不贵的收费服务。
其他外链相册的图片都先下载到本地,然后制作本地缩略图。
我用的相册插件 NextGen Gallery 插入的图片,为什么没有提取缩略图?
答:因为 NextGen Gallery 是用自己的标记插入的图片,没有带img标记,故WP-Thumbnails无法识别。未来WP-Thumbnails将增加对NextGen Gallery图片的识别。
我要放置两个不同设置的随机缩略图怎么办?比如我想在一个地方显示6张缩略图,在另一个地方显示10张缩略图?
答:必须手动放置带参数的代码,这个并不难。在中,有十分详细的说明。
我觉得图片的边框和样式都不好看,后台除了能调整在左右显示首页缩略图以及调整图片间距,还能调节什么?
答:调不了。如果你熟悉CSS的话,可以编辑插件下的样式文件style.css。
style.css文件控制缩略图的显示效果,比如标题文字大小、颜色,缩略图边框大小、颜色等等。
我的侧边栏图片不在中间,都歪到左边去了?
答:后台每种缩略图的设置中都有一个“图片间距”,这是一个非常重要的参数,把它调大,就可以把图片均匀地撑开,效果也就变得好看了。
我在wp-content/uploads下发现文件夹 ta-thumbnails-cache ?
答:插件自动生成两个文件夹,不要删啊:
wp-content/uploads/ta-thumbnails-cache: 用于保存本地缩略图片。
子文件夹TAdownload: 用于保存下载的远程缩略图片。
缩略图文件夹会不会占用很多空间?
答:取决于你使用了多少外链图片。ta-thumbnails-cache保存的是缩略图,不会占用太多空间。如果你空间很紧张,并且在后台你不再改动图片尺寸,那么可以删除 TAdownload 文件夹下的图片。后台提供了清理缩略图的选项。
后台有个选项:每篇日志最多提取多少张。默认是10张,空间非常紧张的博客,可以将这个数值设小一点,如3张。
我后台选择了只显示每篇日志的第一张图片,可发现ta-thumbnail的值有多张图片?
答:这不矛盾,一个是提取的图片数量,一个是显示出来的数量。
后台有个选项:每篇日志最多提取多少张,你可以改成1张。这个选项是一次性设置,改变之后只对新发布的日志起作用。
所以建议还是不要改成1,否则万一哪天你改成显示文章中任意图片或者显示全排列图片,却仍然只能显示一张。
我在本地测试你的插件,需要批量删除插件信息,重新测试,该怎么做?
答:插件后台最底部有丰富的选项用来清除数据库信息。
前两个安全:不会产生不良影响。
后三个慎用:
点击清理下载的远程文件:慎用!尤其是勾选过“自动将文章中的远程图片替换为本地图片, 本操作消耗资源比较大,慎用”这一选项的,千万不可以清理下载的图片,否则图片都会变叉叉。
点击清理自定义域:就是批量删除所有文章的自定义域ta-thumbnail,使插件重新检测和生成所有的缩略图。这个选项还是比较安全的。
点击彻底清理:慎用!建议不要用。除非你熟悉PHP,并且认真看了我插件的源代码,知道我这个选项是干什么的。
数据库中出现很多重复的项_edit_last, _edit_lock?
答:看仔细了,这些项并不重复,它们的post_id不一样!数据库出现很多_edit_last, _edit_lock的原因不是我插件造成的,WordPress会在编辑一篇日志或防止这篇日志被其他user编辑时,自动插入_edit_last, _edit_lock。
月光博客发表过一篇文章,优化数据库的:
DELETE FROM wp_postmeta WHERE meta_key = '_edit_lock';
DELETE FROM wp_postmeta WHERE meta_key = '_edit_last';
可是,有什么用处呢?下次只要你再次编辑日志的时候,wordpress又会自动为该日志插入_edit_last, _edit_lock。再说,清除_edit_last, _edit_lock之后真的能节省数据库空间吗?——微乎其微。
所以,完全不用担心这个问题。
我打开日志总是出现warning:failed to open stream: Permission denied 之类的文字?
答:哦,很抱歉,提示文字表明权限不够。请把wp-content/uploads文件夹下的ta-thumbnails-cache和它下面的子文件夹TAdownload的权限都设置成755。
把uploads文件夹下的ta-thumbnails-cache和它下面的子文件夹TAdownload的权限都设置成777把uploads文件夹下的ta-thumbnails-cache和它下面的子文件夹TAdownload的权限都设置成777。
我用过以前的版本,代码还需要改动吗?
答:一般不需要改动,WP-Thumbnails 是 Thumbnails Anywhere 的升级版,完全兼容Thumbnails Anywhere ,以前的代码仍然有效。
部分主题的首页缩略图在IE浏览器下变形压扁了?
答:的确有这样的问题。有极少数主题的首页缩略图效果,在IE浏览器被挤扁了。显然,这是CSS不兼容IE导致的,但我无法确定是通过修改WP-Thumbnails的CSS还是你的主题CSS来解决问题,因为我不熟悉CSS。
我建议你在主题文件index.php中手动选择一个合适的位置插入代码试试看,或者,呃,换个主题。ie的css兼容真的是一个很麻烦的问题,鸟类网的主题对ie支持比较好,没有压缩变形的问题。
请下载最新版本的插件,我在WP-Thumbnails 3.2.2版本尝试修正了这个css的问题。
你的插件不支持我的主题?
答:绝大部分主题都可以支持。但仍有部分主题高度定制化,使用了大量自定义的函数,自动启用没有效果。解决办法:
2、手动放置代码
请注意,你不能要求我的插件兼容主题,只有主题兼容插件的说法。
为什么不及时回复我的留言?
答:原因有三:
1、我的精力有限;
2、你描述不清,虽然反馈了问题,但是没有遵守我在本文开头介绍的反馈方式,或者没有提供任何有用的信息,导致我根本无法排查原因;有时候我完全看不懂你说的话(猜了3分钟还猜不到你的意思),所以我就懒得理你喽。(凡是我没有回复的问题,99%属于这个原因。)
3、我没有义务。
我有意进行捐赠,捐多少合适?
答:都合适。
21,506 人访问过本文
你在还原上没给出自动的,很不方便。。害我用了下,想还原都好麻烦。。
雁过留声,人过留名
请 以发表评论.
WP Thumbnails
WP Thumbnails专题介绍
我修改的插件
鸟类网推荐图床
鸟类网经验分享博客分类:
Asynchronous JavaScript and XML (Ajax
) 是驱动新一代 Web 站点(流行术语为 Web 2.0 站点)的关键技术。Ajax 允许在不干扰 Web 应用程序的显示和行为的情况下在后台进行数据检索。使用 XMLHttpRequest
函数获取数据,它是一种 API,允许客户端 JavaScript 通过 HTTP 连接到远程服务器。Ajax 也是许多 mashup 的驱动力,它可将来自多个地方的内容集成为单一 Web 应用程序。
不过,由于受到浏览器的限制,该方法不允许跨域通信。如果尝试从不同的域请求数据,会出现安全错误。如果能控制数
据驻留的远程服务器并且每个请求都前往同一域,就可以避免这些安全错误。但是,如果仅停留在自己的服务器上,Web
应用程序还有什么用处呢?如果需要从多个第三方服务器收集数据时,又该怎么办?
同源策略阻止从一个域上加载的脚本获取或操作另一个域上的文档属性。也就是说,受到请求的 URL
的域必须与当前 Web 页面的域相同。这意味着浏览器隔离来自不同源的内容,以防止它们之间的操作。这个浏览器策略很旧,从 Netscape
Navigator 2.0 版本开始就存在。
克服该限制的一个相对简单的方法是让 Web 页面向它源自的 Web 服务器请求数据,并且让 Web
服务器像代理一样将请求转发给真正的第三方服务器。尽管该技术获得了普遍使用,但它是不可伸缩的。另一种方式是使用框架要素在当前 Web
页面中创建新区域,并且使用 GET
请求获取任何第三方资源。不过,获取资源后,框架中的内容会受到同源策略的限制。
克服该限制更理想方法是在 Web 页面中插入动态脚本元素,该页面源指向其他域中的服务 URL
并且在自身脚本中获取数据。脚本加载时它开始执行。该方法是可行的,因为同源策略不阻止动态脚本插入,并且将脚本看作是从提供 Web
页面的域上加载的。但如果该脚本尝试从另一个域上加载文档,就不会成功。幸运的是,通过添加 JavaScript Object Notation
(JSON) 可以改进该技术。
1、什么是JSONP?
要了解JSONP,不得不提一下JSON,那么什么是
JSON is a subset of the object literal notation of JavaScript. Since
JSON is a subset of JavaScript, it can be used in the language with no
muss or fuss.
JSONP(JSON with Padding)是一个非官方的协议,它允许在服务器端集成Script tags返回至客户端,通过javascript callback的形式实现跨域访问(这仅仅是JSONP简单的实现形式)。
2、JSONP有什么用?
由于同源策略的限制,XmlHttpRequest只允许请求当前源(域名、协议、端口)的资源,为了实现跨域请求,可以通过script标签实现跨域请求,然后在服务端输出JSON数据并执行回调函数,从而解决了跨域的数据请求。
3、如何使用JSONP?
下边这一DEMO实际上是JSONP的简单表现形式,在客户端声明回调函数之后,客户端通过script标签向服务器跨域请求数据,然后服务端返回相应的数据并动态执行回调函数。
HTML代码 (任一
&meta content="text/ charset=utf-8" http-equiv="Content-Type" /&
&script type="text/javascript"&
function jsonpCallback(result) {
//alert(result);
for(var i in result) {
alert(i+":"+result[i]);//循环输出a:1,b:2,etc.
var JSONP=document.createElement("script");
JSONP.type="text/javascript";
JSONP.src="http://crossdomain.com/services.php?callback=jsonpCallback";
document.getElementsByTagName("head")[0].appendChild(JSONP);
&meta content="text/ charset=utf-8" http-equiv="Content-Type" /&
&script type="text/javascript"&
function jsonpCallback(result) {
alert(result.a);
alert(result.b);
alert(result.c);
for(var i in result) {
alert(i+":"+result[i]);//循环输出a:1,b:2,etc.
&script type="text/javascript" src="http://crossdomain.com/services.php?callback=jsonpCallback"&&/script&
JavaScript的链接,必须在function的下面。
服务端PHP代码 (services.php):
//服务端返回JSON数据
$arr=array('a'=&1,'b'=&2,'c'=&3,'d'=&4,'e'=&5);
$result=json_encode($arr);
//echo $_GET['callback'].'("Hello,World!")';
//echo $_GET['callback']."($result)";
//动态执行回调函数
$callback=$_GET['callback'];
echo $callback."($result)";
如果将上述JS客户端代码用jQuery的方法来实现,也非常简单。
客户端JS代码在jQuery中的实现方式1:
&script type="text/javascript" src="jquery.js"&&/script&
&script type="text/javascript"&
$.getJSON("http://crossdomain.com/services.php?callback=?",
function(result) {
for(var i in result) {
alert(i+":"+result[i]);//循环输出a:1,b:2,etc.
客户端JS代码在jQuery中的实现方式2:
&script type="text/javascript" src="jquery.js"&&/script&
&script type="text/javascript"&
url:"http://crossdomain.com/services.php",
dataType:'jsonp',
jsonp:'callback',
success:function(result) {
for(var i in result) {
alert(i+":"+result[i]);//循环输出a:1,b:2,etc.
timeout:3000
客户端JS代码在jQuery中的实现方式3:
&script type="text/javascript" src="jquery.js"&&/script&
&script type="text/javascript"&
$.get('http://crossdomain.com/services.php?callback=?', {name: encodeURIComponent('tester')}, function (json) { for(var i in json) alert(i+":"+json[i]); }, 'jsonp');
其中 jsonCallback 是客户端注册的,获取
跨域服务器
上的json数据
后,回调的函数。
http://crossdomain.com/services.php?callback=jsonpCallback
这个 url 是跨域服务
器取 json 数据的接口,参数为回调函数的名字,返回的格式为
jsonpCallback({msg:'this is json data'})
Jsonp原理:
首先在客户端注册一个callback, 然后把callback的名字传给服务器。
此时,服务器先生成 json 数据。
然后以 javascript 语法的方式,生成一个function , function 名字就是传递上来的参数 jsonp.
最后将 json 数据直接以入参的方式,放置到 function 中,这样就生成了一段 js 语法的文档,返回给客户端。
客户端浏览器,解析script标签,并执行返回的 javascript 文档,此时数据作为参数,传入到了客户端预先定义好的 callback 函数里.(动态执行回调函数)
使用JSON的优点在于:
比XML轻了很多,没有那么多冗余的东西。
JSON也是具有很好的可读性的,但是通常返回的都是压缩过后的。不像XML这样的浏览器可以直接显示,浏览器对于JSON的格式化的显示就需要借助一些插件了。
在JavaScript中处理JSON很简单。
其他语言例如PHP对于JSON的支持也不错。
JSON也有一些劣势:
JSON在服务端语言的支持不像XML那么广泛,不过JSON.org上提供很多语言的库。
如果你使用eval()来解析的话,会容易出现安全问题。
尽管如此,JSON的优点还是很明显的。他是Ajax数据交互的很理想的数据格式。
JSONP 是构建 mashup
的强大技术,但不幸的是,它并不是所有跨域通信需求的万灵药。它有一些缺陷,在提交开发资源之前必须认真考虑它们。
第一,也是最重要的一点,没有关于
JSONP 调用的错误处理。如果动态脚本插入有效,就执行调用;如果无效,就静默失败。失败是没有任何提示的。例如,不能从服务器捕捉到 404
错误,也不能取消或重新开始请求。不过,等待一段时间还没有响应的话,就不用理它了。(未来的 jQuery 版本可能有终止 JSONP
请求的特性)。
JSONP 的另一个主要缺陷是被不信任的服务使用时会很危险。因为 JSONP 服务返回打包在函数调用中的 JSON 响应,而函数调用是由浏览器执行的,这使宿主 Web 应用程序更容易受到各类攻击。如果打算使用 JSONP 服务,了解它能造成的威胁非常重要。
浏览 498747
终于学会啦。。感谢LZ。。。。不客气!
不错,谢谢!有帮助就好!
呵呵,没事。stackoverflow的我看了,都没有成功解决http访问https的,有回复说针对火狐浏览器的那个,试了也不行,有成功访问的,但是是添加证书了的,关于php的我就不清楚了,不会这个。还是弄个HttpsUtil去访问https了会php的话,这个就非常容易了。。。 加油!
Ripin_Yan 写道
$("input[lang='jsonp']").click(function(){
var url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wx59df2ba56720ee7d&secret=7aca07ba40ac&jsoncallback=?";
$.getJSON(url,function(data){
console.info("weixin:"+data);
hi, 这两天太忙,没有来得及回复,不好意思。& 你的问题的确是因为https安全引起的,我们正在使用的是jquery,当你从http获取https加密网站的数据时候,jquery默认会认为是不安全的,所以程序根本就得不到返回值,那就更谈不上打印出来了。 我觉得比较简单的方法如下(如果你是一个phper的话):
$(function(){
//$("input[lang='jsonp']").click(function(){
var url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wx59df2ba56720ee7d&secret=7aca07ba40ac&callback=?";
alert(url);
$.getJSON(url,function(data){ alert(data);
//for(var i in data) alert(i+":"+data[i]);
var data = JSON.parse('&?php echo file_get_contents('https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wx59df2ba56720ee7d&secret=7aca07ba40ac&callback=?') ?&');
for(var i in data) alert(i+":"+data[i]);
参考网站(如果没有被屏蔽的话):呵呵,没事。stackoverflow的我看了,都没有成功解决http访问https的,有回复说针对火狐浏览器的那个,试了也不行,有成功访问的,但是是添加证书了的,关于php的我就不清楚了,不会这个。还是弄个HttpsUtil去访问https了
$("input[lang='jsonp']").click(function(){
var url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wx59df2ba56720ee7d&secret=7aca07ba40ac&jsoncallback=?";
$.getJSON(url,function(data){
console.info("weixin:"+data);
hi, 这两天太忙,没有来得及回复,不好意思。& 你的问题的确是因为https安全引起的,我们正在使用的是jquery,当你从http获取https加密网站的数据时候,jquery默认会认为是不安全的,所以程序根本就得不到返回值,那就更谈不上打印出来了。 我觉得比较简单的方法如下(如果你是一个phper的话):
$(function(){
//$("input[lang='jsonp']").click(function(){
var url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wx59df2ba56720ee7d&secret=7aca07ba40ac&callback=?";
alert(url);
$.getJSON(url,function(data){ alert(data);
//for(var i in data) alert(i+":"+data[i]);
var data = JSON.parse('&?php echo file_get_contents('https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wx59df2ba56720ee7d&secret=7aca07ba40ac&callback=?') ?&');
for(var i in data) alert(i+":"+data[i]);
参考网站(如果没有被屏蔽的话):
看完你那篇文章,感觉不是很理解,用confole.info(result);结果是:[object Object],这些不懂的就不去想了,反正理解一点,json不能脱离string,就是一串字符串,只不过元素会使用特定的符号标注。&&& 回到我这个问题的开始,能正确拿到返回的数据,就是会出现SyntaxError: before statement的错误,试了IE也是如此,问题的本质是不是因为我的url跨了协议,不能是https的urlJSON:JavaScript 对象表示法(JavaScript Object Notation)。其实JSON也算是对象了。至于你的问题,能不能给我你的https地址,以及代码,我调试一下。
Ripin_Yan 写道天梯梦 写道Ripin_Yan 写道这个测试也可以,我对比了一下,发现你这个代码返回的就是字符串格式,我跨域访问的微信服务器返回的是json格式的数据,难道是不能返回json格式的?不应该啊
{"access_token":"BQ7FC0Ja1U152b3kNcH14bs2gDqN4awoVZbAYR7aDRcLMxqU8diroUIPK0eG_Ej0MangnpKm7Dp4MnZkcynD5r_1dzlIyT6R78e0abo1LoQ","expires_in":7200}
---------------------------------------------------------------------
jQuery({"a":1,"b":2,"c":3,"d":4,"e":5})
我觉得你还是没有明白什么json,没有所谓的字符串格式,而所谓的json格式就是字符串组成的。好吧,我表达的有问题,我的意思是返回的字符串符不符合json规则,从返回值上看我这个{"access_token":"BQ7FC0Ja1U152b3kNcH14bs2gDqN4awoVZbAYR7aDRcLMxqU8diroUIPK0eG_Ej0MangnpKm7Dp4MnZkcynD5r_1dzlIyT6R78e0abo1LoQ","expires_in":7200}就是有效的json数据,你这个jQuery({"a":1,"b":2,"c":3,"d":4,"e":5})就不是,但是奇怪的是你这个字符串也能被javascript解析,可以直接alert(result.c);得到值3我想说的有三点:第一:跨域名获取网页内容时,返回的内容无论是什么,整个内容都将视为字符串的属性,因为返回时候,不会验证内容,而是一概视为字符串。第二:参考另一篇文章,在字符串里,JSON才是JSON第三:我返回的 jQuery({"a":1,"b":2,"c":3,"d":4,"e":5}) 你就当做是 {"a":1,"b":2,"c":3,"d":4,"e":5} 就可以了,我想jQuery()应该是跟jquery有关的。不知道这么解释,是不是和你的问题对口...&&& 看完你那篇文章,感觉不是很理解,用confole.info(result);结果是:[object Object],这些不懂的就不去想了,反正理解一点,json不能脱离string,就是一串字符串,只不过元素会使用特定的符号标注。&&& 回到我这个问题的开始,能正确拿到返回的数据,就是会出现SyntaxError: before statement的错误,试了IE也是如此,问题的本质是不是因为我的url跨了协议,不能是https的url
天梯梦 写道Ripin_Yan 写道这个测试也可以,我对比了一下,发现你这个代码返回的就是字符串格式,我跨域访问的微信服务器返回的是json格式的数据,难道是不能返回json格式的?不应该啊
{"access_token":"BQ7FC0Ja1U152b3kNcH14bs2gDqN4awoVZbAYR7aDRcLMxqU8diroUIPK0eG_Ej0MangnpKm7Dp4MnZkcynD5r_1dzlIyT6R78e0abo1LoQ","expires_in":7200}
---------------------------------------------------------------------
jQuery({"a":1,"b":2,"c":3,"d":4,"e":5})
我觉得你还是没有明白什么json,没有所谓的字符串格式,而所谓的json格式就是字符串组成的。好吧,我表达的有问题,我的意思是返回的字符串符不符合json规则,从返回值上看我这个{"access_token":"BQ7FC0Ja1U152b3kNcH14bs2gDqN4awoVZbAYR7aDRcLMxqU8diroUIPK0eG_Ej0MangnpKm7Dp4MnZkcynD5r_1dzlIyT6R78e0abo1LoQ","expires_in":7200}就是有效的json数据,你这个jQuery({"a":1,"b":2,"c":3,"d":4,"e":5})就不是,但是奇怪的是你这个字符串也能被javascript解析,可以直接alert(result.c);得到值3我想说的有三点:第一:跨域名获取网页内容时,返回的内容无论是什么,整个内容都将视为字符串的属性,因为返回时候,不会验证内容,而是一概视为字符串。第二:参考另一篇文章,在字符串里,JSON才是JSON第三:我返回的 jQuery({"a":1,"b":2,"c":3,"d":4,"e":5}) 你就当做是 {"a":1,"b":2,"c":3,"d":4,"e":5} 就可以了,我想jQuery()应该是跟jquery有关的。不知道这么解释,是不是和你的问题对口...
Ripin_Yan 写道这个测试也可以,我对比了一下,发现你这个代码返回的就是字符串格式,我跨域访问的微信服务器返回的是json格式的数据,难道是不能返回json格式的?不应该啊
{"access_token":"BQ7FC0Ja1U152b3kNcH14bs2gDqN4awoVZbAYR7aDRcLMxqU8diroUIPK0eG_Ej0MangnpKm7Dp4MnZkcynD5r_1dzlIyT6R78e0abo1LoQ","expires_in":7200}
---------------------------------------------------------------------
jQuery({"a":1,"b":2,"c":3,"d":4,"e":5})
我觉得你还是没有明白什么json,没有所谓的字符串格式,而所谓的json格式就是字符串组成的。好吧,我表达的有问题,我的意思是返回的字符串符不符合json规则,从返回值上看我这个{"access_token":"BQ7FC0Ja1U152b3kNcH14bs2gDqN4awoVZbAYR7aDRcLMxqU8diroUIPK0eG_Ej0MangnpKm7Dp4MnZkcynD5r_1dzlIyT6R78e0abo1LoQ","expires_in":7200}就是有效的json数据,你这个jQuery({"a":1,"b":2,"c":3,"d":4,"e":5})就不是,但是奇怪的是你这个字符串也能被javascript解析,可以直接alert(result.c);得到值3
这个测试也可以,我对比了一下,发现你这个代码返回的就是字符串格式,我跨域访问的微信服务器返回的是json格式的数据,难道是不能返回json格式的?不应该啊
{"access_token":"BQ7FC0Ja1U152b3kNcH14bs2gDqN4awoVZbAYR7aDRcLMxqU8diroUIPK0eG_Ej0MangnpKm7Dp4MnZkcynD5r_1dzlIyT6R78e0abo1LoQ","expires_in":7200}
---------------------------------------------------------------------
jQuery({"a":1,"b":2,"c":3,"d":4,"e":5})
我觉得你还是没有明白什么json,没有所谓的字符串格式,而所谓的json格式就是字符串组成的。
Ripin_Yan 写道不知博主在使用$.getJSON(url,function(json){&&& alert("abc");});是否用火狐测过,始终报错SyntaxError: before statement {"access_token":"G0ygr95aKC7mpRSj0todNxf1Gia8IFXroqTytb6JOb83w9nZfKgNAQJT9f,网上看到有php的解决方案: echo "{$_GET['jsoncallback']}({$b})";但是jsp上却不知道怎么解决。你可以在本地运行一下如下代码:
&script type="text/javascript" src="http://sources.ikeepstudying.com/js/jquery-1.8.3.min.js"&&/script&
&script type="text/javascript"&
$.getJSON("http://test.ikeepstudying.com/json.php?callback=?",
function(result) {
for(var i in result) {
alert(i+":"+result[i]);//循环输出a:1,b:2,etc.
我的火狐通过测试这个测试也可以,我对比了一下,发现你这个代码返回的就是字符串格式,我跨域访问的微信服务器返回的是json格式的数据,难道是不能返回json格式的?不应该啊
{"access_token":"BQ7FC0Ja1U152b3kNcH14bs2gDqN4awoVZbAYR7aDRcLMxqU8diroUIPK0eG_Ej0MangnpKm7Dp4MnZkcynD5r_1dzlIyT6R78e0abo1LoQ","expires_in":7200}
---------------------------------------------------------------------
jQuery({"a":1,"b":2,"c":3,"d":4,"e":5})
不知博主在使用$.getJSON(url,function(json){&&& alert("abc");});是否用火狐测过,始终报错SyntaxError: before statement {"access_token":"G0ygr95aKC7mpRSj0todNxf1Gia8IFXroqTytb6JOb83w9nZfKgNAQJT9f,网上看到有php的解决方案: echo "{$_GET['jsoncallback']}({$b})";但是jsp上却不知道怎么解决。你可以在本地运行一下如下代码:
&script type="text/javascript" src="http://sources.ikeepstudying.com/js/jquery-1.8.3.min.js"&&/script&
&script type="text/javascript"&
$.getJSON("http://test.ikeepstudying.com/json.php?callback=?",
function(result) {
for(var i in result) {
alert(i+":"+result[i]);//循环输出a:1,b:2,etc.
我的火狐通过测试
hi,请教一下,服务端是个单纯的json数据的api,该如何操作呢。我按照你的方法写客户端html,发现取不到数据返回后不会调用callback函数,不知道数据去哪里了。你可以打开firebug之后,再进行调试,看看有什么报错。
请问如何跨域提交xlm格式的数据到服务器?简单的方法就是通过curl获取页面内容,然后再解析xml,最后上传到数据库。
& 上一页 1
来自: 洛杉矶
wocan23 写道我想问下那个111.1是怎么得来的我也看不 ...
这php留言板确实不错
试试 pageoffice 在线打开 PDF 文件吧. pag ...
opacity: 0.5; 个人喜欢这种方式!关于其他css特 ...
推荐用StratoIO打印控件,浏览器和系统的兼容性都很好,而 ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'}

我要回帖

更多关于 cftool 拟合函数输出 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信