2011-07-11 49 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]等訪問字段。

相關問題