﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-李威 さぽている</title><link>http://www.blogjava.net/liwei/</link><description>&lt;font color="red"&gt;小说翻译，日语相关转移至&lt;a href="http://blog.hjenglish.com/liwei"&gt;http://blog.hjenglish.com/liwei&lt;/a&gt;&lt;/font&gt;</description><language>zh-cn</language><lastBuildDate>Wed, 29 Apr 2026 01:46:57 GMT</lastBuildDate><pubDate>Wed, 29 Apr 2026 01:46:57 GMT</pubDate><ttl>60</ttl><item><title>JSONP 跨域原理小解</title><link>http://www.blogjava.net/liwei/archive/2012/01/10/368262.html</link><dc:creator>李威</dc:creator><author>李威</author><pubDate>Tue, 10 Jan 2012 13:30:00 GMT</pubDate><guid>http://www.blogjava.net/liwei/archive/2012/01/10/368262.html</guid><wfw:comment>http://www.blogjava.net/liwei/comments/368262.html</wfw:comment><comments>http://www.blogjava.net/liwei/archive/2012/01/10/368262.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liwei/comments/commentRss/368262.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liwei/services/trackbacks/368262.html</trackback:ping><description><![CDATA[最近看一些代码时，边看边改代码，发现getJSON这个方法没法正常使用。<br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">1</span>&nbsp;<span style="color: #0000FF; ">var</span><span style="color: #000000; "></span><span style="color: #000000; "> sURL</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span>http://api.xxxxxx.com/services/feeds/&nbsp;&nbsp;&nbsp;<br /><span style="color: #000000; "></span><span style="color: #008080; ">2</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;xxxxxxx?format=json&amp;callback=?</span><span style="color: #000000; ">"</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">3</span>&nbsp;<span style="color: #000000; ">$.getJSON(sURL,&nbsp;</span><span style="color: #0000FF; ">function</span><span style="color: #000000; ">(data)&nbsp;{<br /></span><span style="color: #008080; ">4</span>&nbsp;<span style="color: #000000; "></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;do&nbsp;something&nbsp;with&nbsp;the&nbsp;JSON&nbsp;data&nbsp;returned</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">5</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">});&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;end&nbsp;get</span></div><br />究其原因，发现url里有个callback，这里使用的是JSONP，一种跨域技术。<br />网上搜了下JSONP，多数都是在讲如何使用，而没有说明为什么它能跨域，且没有说明url服务器端的代码时如何生成的。<br /><div><a href="http://www.west-wind.com/weblog/posts/2007/Jul/04/JSONP-for-crosssite-Callbacks">http://www.west-wind.com/weblog/posts/2007/Jul/04/JSONP-for-crosssite-Callbacks</a></div>这方面，上面的文章里有比较详细的描述。<br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #0000FF; ">function</span><span style="color: #000000; ">&nbsp;jsonp(url,callback,name,&nbsp;query)<br /></span><span style="color: #008080; ">&nbsp;2</span>&nbsp;<span style="color: #000000; ">{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;3</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(url.indexOf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">?</span><span style="color: #000000; ">"</span><span style="color: #000000; ">)&nbsp;</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">&nbsp;4</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url&nbsp;</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&amp;jsonp=</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;<br /></span><span style="color: #008080; ">&nbsp;5</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;6</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url&nbsp;</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">?jsonp=</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;<br /></span><span style="color: #008080; ">&nbsp;7</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;url&nbsp;</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">&nbsp;name&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">&nbsp;8</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(query)<br /></span><span style="color: #008080; ">&nbsp;9</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url&nbsp;</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">&nbsp;encodeURIComponent(query)&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">10</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;url&nbsp;</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;Date().getTime().toString();&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;prevent&nbsp;caching&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">11</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">12</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">var</span><span style="color: #000000; ">&nbsp;script&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;document.createElement(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">script</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">13</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;script.setAttribute(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">src</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,url);<br /></span><span style="color: #008080; ">14</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;script.setAttribute(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">type</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,</span><span style="color: #000000; ">"</span><span style="color: #000000; ">text/javascript</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">15</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;document.body.appendChild(script);<br /></span><span style="color: #008080; ">16</span>&nbsp;<span style="color: #000000; ">}</span></div><br />客户端的javascript代码会有如上的操作，代码不难，很容易理解，也就是加了一个script标签。<br /><br />而服务器端会返回<div><span style="color: #000000; font-family: verdana, sans-serif; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: #ffffff; display: inline !important; float: none; ">callbackFunction( { "x": 10, "y": 15} )；</span></div>这样的数据。<span style="color: #000000; font-family: verdana, sans-serif; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: #ffffff; display: inline !important; float: none; "></span>这其实是一段javascript代码，<div><span style="color: #000000; font-family: verdana, sans-serif; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: #ffffff; display: inline !important; float: none; ">callbackFunction是方法名，<div><span style="color: #000000; font-family: verdana, sans-serif; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: #ffffff; display: inline !important; float: none; ">{ "x": 10, "y": 15}是参数。客户端代码里必须要有<div><span style="color: #000000; font-family: verdana, sans-serif; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: #ffffff; display: inline !important; float: none; ">callbackFunction方法的定义。</span></div></span></div></span></div><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;partial&nbsp;</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;JSONP&nbsp;:&nbsp;System.Web.UI.Page<br /></span><span style="color: #008080; ">&nbsp;2</span>&nbsp;<span style="color: #000000; ">{<br /></span><span style="color: #008080; ">&nbsp;3</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">protected</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;Page_Load(</span><span style="color: #0000FF; ">object</span><span style="color: #000000; ">&nbsp;sender,&nbsp;EventArgs&nbsp;e)<br /></span><span style="color: #008080; ">&nbsp;4</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080; ">&nbsp;5</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #000000; ">!</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">.IsNullOrEmpty(Request.QueryString[</span><span style="color: #000000; ">"</span><span style="color: #000000; ">jsonp</span><span style="color: #000000; ">"</span><span style="color: #000000; ">])&nbsp;)<br /></span><span style="color: #008080; ">&nbsp;6</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.JsonPCallback();<br /></span><span style="color: #008080; ">&nbsp;7</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">&nbsp;8</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;9</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;JsonPCallback()<br /></span><span style="color: #008080; ">10</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080; ">11</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">&nbsp;Callback&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;Request.QueryString[</span><span style="color: #000000; ">"</span><span style="color: #000000; ">jsonp</span><span style="color: #000000; ">"</span><span style="color: #000000; ">];<br /></span><span style="color: #008080; ">12</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #000000; ">!</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">.IsNullOrEmpty(Callback))<br /></span><span style="color: #008080; ">13</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080; ">14</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;***&nbsp;Do&nbsp;whatever&nbsp;you&nbsp;need</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">15</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Response.Write(Callback&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">(&nbsp;{\</span><span style="color: #000000; ">"</span><span style="color: #000000; ">x\</span><span style="color: #000000; ">"</span><span style="color: #000000; ">:10&nbsp;,&nbsp;\</span><span style="color: #000000; ">"</span><span style="color: #000000; ">y\</span><span style="color: #000000; ">"</span><span style="color: #000000; ">:100}&nbsp;);</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; ">16</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">17</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">18</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Response.End();<br /></span><span style="color: #008080; ">19</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">20</span>&nbsp;<span style="color: #000000; ">}</span></div><br />之后客户端会调用<span style="color: #000000; font-family: verdana, sans-serif; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: #ffffff; display: inline !important; float: none; ">callbackFunction</span>。<br />使用JQuery的getJSON方法后，callback部分会变成如下形式。<br /><div>callback=jQuery1710461701650187642_1326201333794&amp;_=1326201356534<br /><div><span style="color: #000000; font-family: verdana,sans-serif; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; background-color: #ffffff; display: inline ! important; float: none;">callbackFunction自然就是<div>jQuery1710461701650187642_1326201333794部分了。<br />返回来的数据也会是<span style="color: #000000; font-family: verdana, sans-serif; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: #ffffff; display: inline !important; float: none; ">jQuery1710461701650187642_1326201333794</span>( { "x": 10, "y": 15} ) 这种形式。<br /><br /><div><span style="color: #000000; font-family: verdana,sans-serif; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; background-color: #ffffff; display: inline ! important; float: none;"><span style="color: #0000FF; "></span></span><span style="color: #000000; font-family: verdana,sans-serif; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; background-color: #ffffff; display: inline ! important; float: none;"><span style="color: #000000; font-family: verdana,sans-serif; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; background-color: #ffffff; display: inline ! important; float: none;"><span style="color: #0000FF; "></span></span></span><span style="color: #000000; font-family: verdana, sans-serif; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: #ffffff; display: inline !important; float: none; ">最后JQuery会调用匿名函数<div><span style="color: #000000; font-family: verdana,sans-serif; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; background-color: #ffffff; display: inline ! important; float: none;"><span style="color: #000000; font-family: verdana,sans-serif; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; background-color: #ffffff; display: inline ! important; float: none;"><span style="color: #000000; font-family: verdana,sans-serif; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; background-color: #ffffff; display: inline ! important; float: none;"><span style="color: #0000FF; ">function</span><span style="color: #000000; ">(data)，data即为json数据。<br /><br />JQuery已经将客户端部分实现了，服务器端也得遵循同样的规则才能实现跨域。<br /><br /><br />*这里有一点，JQuery如何将匿名函数换名字的？有哪位大侠知道的，请用简单的语言讲解下。<br /></span></span></span></span></div><br /></span></div></div></span></div></div><img src ="http://www.blogjava.net/liwei/aggbug/368262.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liwei/" target="_blank">李威</a> 2012-01-10 21:30 <a href="http://www.blogjava.net/liwei/archive/2012/01/10/368262.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>error code 0x80004005</title><link>http://www.blogjava.net/liwei/archive/2011/12/06/365700.html</link><dc:creator>李威</dc:creator><author>李威</author><pubDate>Tue, 06 Dec 2011 13:13:00 GMT</pubDate><guid>http://www.blogjava.net/liwei/archive/2011/12/06/365700.html</guid><wfw:comment>http://www.blogjava.net/liwei/comments/365700.html</wfw:comment><comments>http://www.blogjava.net/liwei/archive/2011/12/06/365700.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liwei/comments/commentRss/365700.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liwei/services/trackbacks/365700.html</trackback:ping><description><![CDATA[<div>记录一个小问题。<br />在Win7系统上装一个软件时失败，提示2个DLL没有注册成功。<br />于是准备手动注册。<br />运行<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">cd&nbsp;C:</span><span style="color: #000000; ">\</span><span style="color: #000000; ">WINDOWS</span><span style="color: #000000; ">\</span><span style="color: #000000; ">system32</span><span style="color: #000000; ">\</span><span style="color: #000000; "><br />regsvr32&nbsp;xxx.dll<br /></span></div>后出现如下错误：<br />The module "xxx.dll" was loaded but the call to DllRegisterServer failed with error code 0x80004005.<br /><br />网上搜索一番后，找到如下地址<br /><div>http://forums.cnet.com/7723-12546_102-237219.html</div>其中有条说run as administrator，这是权限问题，不过我登陆的就是管理员账号，应该不存在这样的问题。<br /><br />抱着姑且一试的想法，写了个cmd文件，右键run as administrator后，居然真的注册成功了！<br /><br />看来Win7系统真的很安全，就算是管理员，也得来个run as administrator后才能做一些事，是在向sudo学习么?</div><img src ="http://www.blogjava.net/liwei/aggbug/365700.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liwei/" target="_blank">李威</a> 2011-12-06 21:13 <a href="http://www.blogjava.net/liwei/archive/2011/12/06/365700.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HTML5的audio标签很坑爹！</title><link>http://www.blogjava.net/liwei/archive/2011/06/11/352107.html</link><dc:creator>李威</dc:creator><author>李威</author><pubDate>Sat, 11 Jun 2011 14:30:00 GMT</pubDate><guid>http://www.blogjava.net/liwei/archive/2011/06/11/352107.html</guid><wfw:comment>http://www.blogjava.net/liwei/comments/352107.html</wfw:comment><comments>http://www.blogjava.net/liwei/archive/2011/06/11/352107.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liwei/comments/commentRss/352107.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liwei/services/trackbacks/352107.html</trackback:ping><description><![CDATA[最近试着用html5在页面加载mp3文件。在chrome下测试通过了，偶然的用firefox4打开，居然没法用&#8230;&#8230;<br />怀疑哪里写错了，可audio标签也就几个属性而已。<br /><br />几经搜索，最后发现的真相让我很崩溃&#8230;&#8230;firefox的audio不支持播放mp3。<br /><br /><div><table><caption>Codec support in modern desktop browsers</caption>   <thead>     <tr>       <th>Browser</th>       <th>Ogg Vorbis</th>       <th>MP3</th>       <th>WAV</th>     </tr>   </thead>   <tbody>     <tr><td>FireFox 3.6+</td>       <td>✓</td>       <td><br /></td>       <td>✓</td>     </tr>     <tr>       <td>Safari 5+</td>       <td><br /></td>       <td>✓</td>       <td>✓</td>     </tr>     <tr>       <td>Chrome 6</td>       <td>✓</td>       <td>✓</td>       <td><br /></td>     </tr>     <tr>       <td>Opera 10.5+</td>       <td>✓</td>       <td><br /></td>       <td>✓</td>     </tr>      <tr>       <td>Internet Explorer 9 (beta)</td>       <td><br /></td>       <td>✓</td>       <td>✓</td></tr></tbody></table></div><div>出自 http://html5doctor.com/native-audio-in-the-browser/</div><br />看了这个表之后，虽然很多浏览器都支持html5，但如果你想播放一个文件，任何一种格式都不能让所有浏览器正常播放。<br />哈哈哈，html5定义了媒体标签，但没规定媒体的默认编码格式，导致各浏览器各自为政。<br />真是不方便&#8230;&#8230;<img src ="http://www.blogjava.net/liwei/aggbug/352107.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liwei/" target="_blank">李威</a> 2011-06-11 22:30 <a href="http://www.blogjava.net/liwei/archive/2011/06/11/352107.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PHP GD画图时出现的文字乱码问题</title><link>http://www.blogjava.net/liwei/archive/2011/03/31/347397.html</link><dc:creator>李威</dc:creator><author>李威</author><pubDate>Thu, 31 Mar 2011 07:46:00 GMT</pubDate><guid>http://www.blogjava.net/liwei/archive/2011/03/31/347397.html</guid><wfw:comment>http://www.blogjava.net/liwei/comments/347397.html</wfw:comment><comments>http://www.blogjava.net/liwei/archive/2011/03/31/347397.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liwei/comments/commentRss/347397.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liwei/services/trackbacks/347397.html</trackback:ping><description><![CDATA[GD画图时通常显示文字是用imagettftext方法，但它的参数必须是UTF-8编码的。<br />
此时得注意php文件的编码<br />
1.如果是UTF-8的，直接传硬编码字符串就可正常显示<br />
2.如果是gb2312或其它的，则必须进行转换 mb_convert_encoding($str, 'UTF-8')<br />
<br />
另外，还有一种情况，JIS-mapped Japanese Font Support被开启时，imagettftext就必须传SJIS编码，传UTF-8反而会乱码。<br />
此时必须将其转码后传入，mb_convert_encoding($sStr,"SJIS", "UTF-8")。<br />
<br />
以上。
<img src ="http://www.blogjava.net/liwei/aggbug/347397.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liwei/" target="_blank">李威</a> 2011-03-31 15:46 <a href="http://www.blogjava.net/liwei/archive/2011/03/31/347397.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>TurboC3.0英文版中界面边框为乱码问题的解决发法</title><link>http://www.blogjava.net/liwei/archive/2011/01/26/343595.html</link><dc:creator>李威</dc:creator><author>李威</author><pubDate>Wed, 26 Jan 2011 11:26:00 GMT</pubDate><guid>http://www.blogjava.net/liwei/archive/2011/01/26/343595.html</guid><wfw:comment>http://www.blogjava.net/liwei/comments/343595.html</wfw:comment><comments>http://www.blogjava.net/liwei/archive/2011/01/26/343595.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liwei/comments/commentRss/343595.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liwei/services/trackbacks/343595.html</trackback:ping><description><![CDATA[在次提供TurboC3.0英文版下载。<br />
<br />
<a href="http://www.blogjava.net/Files/liwei/TCPP.rar">TCPP.rar</a><br />
上网须谨慎，下载请杀毒。<br />
<br />
TC3.0窗口模式，边框有中文乱码。全屏就没有。<br />
原因是当前的code page是中文的936，可以在cmd中用chcp命令查看。<br />
利用命令 chcp 437 改为老美的，就可以了。<br />
具体操作<br />
启动TCPP.exe-&gt;File-&gt;DOS Shell-&gt;chcp 437-&gt;exit<br />
回到TCPP后就没乱码了。<br />
但这个方法治标不治本，每次启动TCPP仍是乱码。<br />
<br />
另一种方法<br />
在TCPP窗口的左上角单击，出现菜单（包含最大化，最小化，属性等），在默认选项的第一个页面&#8220;选项&#8221;里Default code page选择437 (OEM United Status)。因为我目前使用的是英文系统，不知道中文系统中是否有该项。如果没有该项，请自行寻找方法让它有。<br />
之后，一切OK，至少我OK了&#8230;&#8230;<br />
<img src ="http://www.blogjava.net/liwei/aggbug/343595.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liwei/" target="_blank">李威</a> 2011-01-26 19:26 <a href="http://www.blogjava.net/liwei/archive/2011/01/26/343595.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>