<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://www.jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://www.jackxiang.com/post//</link>
<title><![CDATA[[实践OK]一个JavaScript函数把URL参数解析成Json对象]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[Unix/LinuxC技术]]></category>
<pubDate>Sun, 13 Aug 2017 11:39:28 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	问题：请编写一个JavaScript函数parseQueryString，它的用途是把URL参数解析为一个对象。<br/><textarea name="code" class="php" rows="15" cols="100">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function parseQueryString(uri) &#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var obj = &#123;&#125;;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var keyvalue = [];
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var key = &#039;&#039;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value = &#039;&#039;;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var paraString= new Array(); 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;paraString = uri.split(&#039;&amp;&#039;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (var i in paraString) &#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;keyvalue = paraString[i].split(&#039;=&#039;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;key = keyvalue[0];
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value = keyvalue[1];
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;obj[key] = value;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return obj;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;


var b = parseQueryString(&quot;a=b&amp;c=d&quot;);
document.write(b.a);
document.write(b.c);
</textarea><br/>运行结果：<br/>a c<br/>eg：var obj=parseQueryString(url);<br/><br/>创建对象的三种形式：<br/><br/>一：<br/>var Person=new Object();<br/>Person.name=&quot;Sun&quot;;<br/>Person.age=24;<br/><br/>二：<br/>var Person=new Object();<br/>Person[&quot;name&quot;]=&quot;Sun&quot;;<br/>Person[&quot;age&quot;]=24;<br/><br/>三：<br/>对象字面量表达式<br/>var Person=&#123;<br/>name: &quot;Sun&quot;,<br/>age: 24<br/>&#125;<br/><br/>PS：<br/>1、在这个例子中，比较适合使用第二种形式，向obj中添加元素<br/>2、split(&quot;&amp;&quot;) , 如果url只有一个参数的时候，没有“&amp;”的时候，也不会报错，只会返回array[0]<br/>function parseQueryString(url) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;var obj = &#123;&#125;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;var keyvalue = [];<br/>&nbsp;&nbsp;&nbsp;&nbsp;var key = &quot;&quot;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value = &quot;&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;var paraString = url.substring(url.indexOf(&quot;?&quot;) + 1, url.length).split(&quot;&amp;&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;for (var i in paraString) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;keyvalue = paraString[i].split(&quot;=&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;key = keyvalue[0];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value = keyvalue[1];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;obj[key] = value;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;return obj;<br/>&#125;<br/><br/>以下介绍了JS根据key值获取URL中的参数值及把URL的参数转换成json对象，js通过两种方式获取url传递参数，代码<br/>示例一：<br/>//把url的参数部分转化成json对象 <br/> parseQueryString: function(url) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp; var reg_url = /^[^/?]+/ ? ([/w/W] + ) $ / ,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reg_para = /([^&amp;=]+)=([/w/W]*?)(&amp;&#124;$&#124;#)/g,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; arr_url = reg_url.exec(url),<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ret = &#123;&#125;;<br/>&nbsp;&nbsp;&nbsp;&nbsp; if (arr_url &amp;&amp; arr_url[1]) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var str_para = arr_url[1],<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while ((result = reg_para.exec(str_para)) != null) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ret[result[1]] = result[2];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp; &#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp; return ret;<br/> &#125;<br/>// 通过key获取url中的参数值<br/> getQueryString: function(name) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;var reg = new RegExp(&quot;(^&#124;&amp;)&quot; + name + &quot;=([^&amp;]*)(&amp;&#124;$)&quot;, &quot;i&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;var r = window.location.search.substr(1).match(reg);<br/>&nbsp;&nbsp;&nbsp;&nbsp;if (r != null) return unescape(r[2]);<br/>&nbsp;&nbsp;&nbsp;&nbsp;return null;<br/>&#125;<br/>示例二：<br/>js通过两种方法获取url传递参数：<br/>js获取url传递参数方法一：<br/> 这里是一个获取URL带QUESTRING参数的JAVASCRIPT客户端解决方案，相当于asp的request.querystring，PHP的$_GET<br/>函数:<br/>function GetRequest() &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;var url = location.search; //获取url中&quot;?&quot;符后的字串 <br/>&nbsp;&nbsp;&nbsp;&nbsp;var theRequest = new Object();<br/>&nbsp;&nbsp;&nbsp;&nbsp;if (url.indexOf(&quot;?&quot;) != -1) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var str = url.substr(1);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strs = str.split(&quot;&amp;&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (var i = 0; i &lt; strs.length; i++) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;theRequest[strs[i].split(&quot;=&quot;)[0]] = (strs[i].split(&quot;=&quot;)[1]);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;return theRequest;<br/>&#125;<br/><br/>然后我们通过调用此函数获取对应参数值：<br/>var Request = new Object();<br/>Request = GetRequest();<br/>var 参数1,参数2,参数3,参数N;<br/>参数1 = Request[&#039;&#039;参数1&#039;&#039;];<br/>参数2 = Request[&#039;&#039;参数2&#039;&#039;];<br/>参数3 = Request[&#039;&#039;参数3&#039;&#039;];<br/>参数N = Request[&#039;&#039;参数N&#039;&#039;];<br/>以此获取url串中所带的同名参数<br/>js获取url传递参数方法二 正则分析法：<br/>function GetQueryString(name) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;var reg = new RegExp(&quot;(^&#124;&amp;)&quot; + name + &quot;=([^&amp;]*)(&amp;&#124;$)&quot;, &quot;i&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;var r = window.location.search.substr(1).match(reg);<br/>&nbsp;&nbsp;&nbsp;&nbsp;if (r != null) return (r[2]);<br/>&nbsp;&nbsp;&nbsp;&nbsp;return null;<br/>&#125;<br/>alert(GetQueryString(&quot;参数名1&quot;));<br/>alert(GetQueryString(&quot;参数名2&quot;));<br/>alert(GetQueryString(&quot;参数名3&quot;));<br/>其他参数获取介绍：<br/>//设置或获取对象指定的文件名或路径。<br/>alert(window.location.pathname);<br/>//设置或获取整个 URL 为字符串。<br/>alert(window.location.href);<br/>//设置或获取与 URL 关联的端口号码。<br/>alert(window.location.port);<br/>//设置或获取 URL 的协议部分。<br/>alert(window.location.protocol);<br/>//设置或获取 href 属性中在井号“#”后面的分段。<br/>alert(window.location.hash);<br/>//设置或获取 location 或 URL 的 hostname 和 port 号码。<br/>alert(window.location.host);<br/>//设置或获取 href 属性中跟在问号后面的部分。<br/>alert(window.location.search);<br/><br/>From:https://www.w3cschool.cn/json/1koy1piy.html
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] [实践OK]一个JavaScript函数把URL参数解析成Json对象]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>