<script type="text/javascript">
一、获取url所有参数值
function US() {
var name, value
var str = location.href
var num = str.indexOf("?")
str = str.substr(num + 1)
var arr = str.split("&")
for (var i = 0 i < arr.length i++) {
num = arr[i].indexOf("=")
if (num > 0) {
name = arr[i].substring(0, num)
value = arr[i].substr(num + 1)
this[name] = value
}
}
}
二、使用JS 发送JSON格式的POST请求
var us = new US()
var xhr = new XMLHttpRequest()
xhr.open("POST", "/searchguard/api/v1/auth/login", true)
xhr.setRequestHeader("Content-type", "application/json")
xhr.setRequestHeader("kbn-version", "5.3.0")
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
if (xhr.status == 200) {
window.location.href = us.nextUrl
}
}
}
xhr.send(JSON.stringify({
"username" : us.u,
"password" : us.p
}))
</script>
最好是使用第一种,然后后台用2个属性接收,或者用对象接收都可以。第二种一般是后台用字符串接收,比如前端传值是data:str='{"uname":"tom","pwd":123}'
那么后端就用str的String类型接收就可以了!
另外推荐一个JSON工具给您。
JSON在线解析:http://www.sojson.com/
在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式:
1.一种为使用eval()函数。
2. 使用Function对象来进行返回解析。
用eval函数来解析,并且使用jquery的each方法来遍历
用jquery解析JSON数据的方法,作为jquery异步请求的传输对象,jquery请求后返回的结果是json对象,这里考虑的都是服务器 返回JSON形式的字符串的形式,对于利用JSONObject等插件封装的JSON对象,与此亦是大同小异,这里不再做说明。
这里首先给出JSON字符串集,字符串集如下:
代码如下:var data="
{
root:
[
{name:'1',value:'0'},
{name:'6101',value:'北京市'},
{name:'6102',value:'天津市'},
{name:'6103',value:'上海市'},
{name:'6104',value:'重庆市'},
{name:'6105',value:'渭南市'},
{name:'6106',value:'延安市'},
{name:'6107',value:'汉中市'},
{name:'6108',value:'榆林市'},
{name:'6109',value:'安康市'},
{name:'6110',value:'商洛市'}
]
}"
var dataObj=eval("("+data+")")//转换为json对象
alert(dataObj.root.length+"个对象")
for(var i=0i<dataObj.root.lengthi++){
var obj=dataObj.root[i]
alert(obj.Name+"--"+obj.value)
}
由于json是以”{}”的方式来开始以及结束的,在JS中,它会被当成一个语句块来处理,所以必须强制性的将它转换成一种表达式。
加上圆括号的目的是迫使eval函数在处理JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语 句(statement)来执行。
第二种解析方式就是使用Function对象来完成,它的典型应用就是在JQUERY中的AJAX方法下的success等对于返回数据data的解析
var json='{"name":"CJ","age":18}'data =(new Function("","return "+json))()
此时的data就是一个会解析成一个 json对象了.