2011-07-11 65 views
2

我有一个web服务,它返回当前的字符串,我希望它返回一个字符串数组。 我的JS代码如下所示:从asp.net web服务返回字符串数组到jquery

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

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

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

编辑:这里是@pukipuki建议(只有相关部分)

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

也许我在这里做一些错误的变更后的C#代码。

编辑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]; 

+0

其中是您在代码中调用Web服务时的部分? –

+0

我通过asp.net ajax调用它。 GetMenu.CreateMenu() –

+0

为你的ASP.NET代码找到一个合适的.ToJson()库,因为你目前正在做的事情很容易出错 – keymone

回答

1

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

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

然后你将能够通过结果索引。

+0

尝试过。这是行不通的。我将c#代码添加到我的文章中。也许问题在那里。 –

0

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

然后我只是返回字符串数组,并将其转换为JSON。 回到js代码中,我现在可以使用结果[0],结果[1]等访问字段。