将字符串数组从asp.net Web服务返回到jquery

时间:2011-07-11 08:45:32

标签: jquery asp.net

我有一个Web服务,当前返回一个字符串,我希望它返回一个字符串数组。 我的js代码看起来像这样:

function getMenu(menuID) {
    $("#open").css('display', 'block');
    $("#close").css('display', 'none');
    $('#flash_container').flash({
        swf: 'mainGallery.swf',
        width: "100%",
        height: 330,
        wmode: "transparent",
        quality: "high",
        flashvars: { XMLFile: 'xml/' + menuID + '.xml' }
    });

    $("div#panel").slideUp("slow", function() {
        var language;
        if (getParameterByName('language') == 'en')
            language = 1;
        else
            language = 0;

        GetMenu.CreateMenu(menuID, language, OnGotMenu, OnFail, "XmlDocument");

    });

}

function OnGotMenu(result) {
    var lblOutput = document.getElementById("lblOutput");
    lblOutput.innerHTML = result;

    $(".MenuList a:last").removeAttr('border-left');

    $("div#panel").slideDown("slow");
    $("#open").css('display', 'none');
    $("#close").css('display', 'block');
    fleXenv.fleXcrollMain("panel_content");
}

现在我返回一个字符串。我想返回string []。

如何修改我的js代码以使用此数组?

编辑:以下是@pukipuki提出的更改后的c#代码(仅限相关部分)

table.RenderControl(tw);
        string retVal = "[\"" + menuDIV + sb.ToString() + "\", \"" + currTitle + "\"]";
        return retVal.ToString();

也许我在这里做错了。

编辑2:更好的c#代码版本:

table.RenderControl(tw);
    retArray[0] = menuDIV + sb.ToString();
    retArray[1] = currTitle;
    string retVal = jsSer.Serialize(retArray);
    return retVal;

但我仍然没有得到一个我可以访问的数组:

var that = result[0];
var oranother = result[1];

2 个答案:

答案 0 :(得分:1)

您应该以以下格式返回数据:

[ "array", "elements", "here" ]

然后你就可以通过结果索引。

答案 1 :(得分:0)

谢谢大家的帮助,你把我推向了正确的方向。 解决方案是添加[ScriptMethod(ResponseFormat=ResponseFormat.Json)]

然后我按原样返回字符串数组,框架将其转换为JSON。 回到js代码,我现在可以使用result [0],result [1]等访问字段。