<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>幻想曲.Net &#187; ajax</title>
	<atom:link href="http://yibin.us/tag/ajax/feed" rel="self" type="application/rss+xml" />
	<link>http://yibin.us</link>
	<description>曾经沧海难为水，除却巫山不是云</description>
	<lastBuildDate>Tue, 15 May 2012 14:31:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Ajax跨域请求</title>
		<link>http://yibin.us/archives/6045</link>
		<comments>http://yibin.us/archives/6045#comments</comments>
		<pubDate>Wed, 26 Nov 2008 13:30:12 +0000</pubDate>
		<dc:creator>幻想曲</dc:creator>
				<category><![CDATA[Develop]]></category>
		<category><![CDATA[ajax]]></category>

		<guid isPermaLink="false">http://yibin.us/?p=6045</guid>
		<description><![CDATA[这二天在做一个小项目，该小项目中分配出小段的js代码供客户调用。该js代码最终将展现完整的html文档，而且会有Ajax交互。由于Ajax无法跨域，Google了一下到是找到了一些解决方案，但感觉都不大好用。比如加Iframe强制设定document.domain、有使用代理文件。后来看到有朋友在分析zhidao.baidu.com的跨域ajax认证，发现这个方法还是可行的。 原理就是动态在页面的head中添加一段script，该script中会定义一个js变量，页面中就可以调用该js变量了。xxx.xxx中代码可能如下:var v=&#8217;这里就是变量啦&#8217;; 核心js代码，动态创建script脚本到head中 function request(page, pagesize, appid) { var url = 'xxx.xxx'; oScript = Find('RemoteScript'); var head = document.getElementsByTagName("head").item(0); if (oScript) { head.removeChild(oScript); } oScript = document.createElement("script"); oScript.setAttribute("src", url); oScript.setAttribute("id",'RemoteScript'); oScript.setAttribute("type","text/javascript"); head.appendChild(oScript); return oScript; } 在调用页的任何区域就可以用变量v了。虽然不是一个很好的解决方案，但感觉也不错了，有一个不足就是必须要等script完全载入之后才可以使用v变量，当然这个也有办法解决。当然，也可以直接用支持跨域的jQuery中的getJson来处理json文件。]]></description>
			<content:encoded><![CDATA[<p>这二天在做一个小项目，该小项目中分配出小段的js代码供客户调用。<br />该js代码最终将展现完整的html文档，而且会有Ajax交互。<br />由于Ajax无法跨域，Google了一下到是找到了一些解决方案，但感觉都不大好用。<br />比如加Iframe强制设定document.domain、有使用代理文件。<br />后来看到有朋友在分析zhidao.baidu.com的跨域ajax认证，发现这个方法还是可行的。</p>
<p>原理就是动态在页面的head中添加一段script，该script中会定义一个js变量，页面中就可以调用该js变量了。<br />xxx.xxx中代码可能如下:<br />var v=&#8217;这里就是变量啦&#8217;;</p>
<p>核心js代码，动态创建script脚本到head中<br /><code><br />
function request(page, pagesize, appid)<br />
{<br />
    var url = 'xxx.xxx';<br />
     oScript = Find('RemoteScript');<br />
     var head = document.getElementsByTagName("head").item(0);<br />
     if (oScript) {<br />
        head.removeChild(oScript);<br />
     }<br />
     oScript = document.createElement("script");<br />
     oScript.setAttribute("src", url);<br />
     oScript.setAttribute("id",'RemoteScript');<br />
     oScript.setAttribute("type","text/javascript");<br />
     head.appendChild(oScript);<br />
     return oScript;<br />
}
</pre>
<p>在调用页的任何区域就可以用变量v了。<br />虽然不是一个很好的解决方案，但感觉也不错了，有一个不足就是必须要等script完全载入之后才可以使用v变量，当然这个也有办法解决。<br />当然，也可以直接用支持跨域的jQuery中的getJson来处理json文件。</p>
]]></content:encoded>
			<wfw:commentRss>http://yibin.us/archives/6045/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>

