首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > ASP >

post 给asp页面的json数据,asp里面如何获取啊

2013-08-01 
post 给asp页面的json数据,asp里面怎么获取啊?传统post过来的数据,比如id1&nametest 什么的很好获取比如

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;
    }
}

热点排行