读书人

post 给asp页面的json数据asp里面如

发布时间: 2013-08-01 15:23:18 作者: rapoo

post 给asp页面的json数据,asp里面怎么获取啊?
传统post过来的数据,比如
id=1&name=test 什么的很好获取
比如用request("id")就可以得到
现在post过来的是json格式的数据,
比如

[
{
"id": "1",
"Name": "test88"
},
{
"id": "2",
"Name": "test99"
}
]

asp页面如何获得这些数据呢?
[解决办法]
自个儿把json解析一下
[解决办法]

v=cstr(request.form)
response.wrrie v

[解决办法]
要借助js
方法1
<script language="jscript" runat="server">
var obj = eval("(" + json +")");
// 在此处处理obj 把它放到普通变量或字典对象中
</script>
<script language="vbscript" runat="server">
此处直接调用上述变量
</script>

方法2
复杂点,找一个能解析js 的 COM组件

sJSPath = sPrjPath & "web\js\jsonparser.js"
Set oFS = CreateObject("Scripting.FileSystemObject")
If oFS.FileExists(sJSPath) Then
Set oFile = oFS.OpenTextFile(sJSPath, 1, False, 0)
sJSText = oFile.ReadAll()
oFile.Close
Set oFile = Nothing
End If

Set oHost = CreateObject("newObjects.Scphost.ScpMan2")
With oHost
.LoadEngine "JScript"
.AddText sJSText
.Run()
Set oDic = .script.getDic(sJSON)
End With
Set oHost = Nothing


jsonparser.js

function getDic(s){
var obj = eval("(" + s + ")");
var dic = new ActiveXObject("newobjects.utilctls.VarDictionary");
with(dic){
allowUnnamedValues = true;
allowDuplicateNames = true;


}
for(item in obj){
parse(item, obj[item], false, dic);
}
return dic;
}

function parse(sName, sValue, bIsArray, oDic){
if(sValue==null) sValue = "";
var t = getType(sValue);
switch(t){
case "array":
var oSubDic = oDic.CreateNew();
for(n in sValue){
parse("", sValue[n], true, oSubDic);
}
oDic.Set(sName, oSubDic);
break;
case "object":
var oSubDic = oDic.CreateNew();
for(n in sValue){
parse(n, sValue[n], false, oSubDic);
}
oDic.Set(sName, oSubDic);
break;
break;
case "number":
case "string":
case "boolean":
if(bIsArray) oDic.Add("", sValue);
else oDic.Set(sName, sValue);
break;
}
}

function getType(obj){
var t = typeof obj;
switch(t){
case "object": var s = obj.constructor;
if(/\bArray\(\) \{/.test(s)) return "array";


else return "object";
break;
default: return t;
}
}

读书人网 >ASP

热点推荐