2012-07-13 33 views
1

我需要在代碼隱藏時從MyMethod返回一個字符串數組。但是,我是否使用javascript在aspx頁面解析它?Asp.net WebMethod - 返回字符串[]並使用JavaScript解析它

[WebMethod] 
public static string[] MyMethod(){ 
    return new[] {"fdsf", "gfdgdfgf"}; 
} 

.......... 
function myFunction() { 
      $.ajax({ ...... 
        success: function (msg) { 
           //how do I parse msg? 
           } 
      }); 
     }; 

回答

4

首先,確保你已經標記了類[ScriptService],以允許它通過AJAX調用。喜歡的東西:

[ScriptService] //<-- Important 
public class WebService : System.Web.Services.WebService 
{ 
    [ScriptMethod] //<-- WebMethod is fine here too 
    public string[] MyMethod() 
    { 
     return new[] {"fdsf", "gfdgdfgf"}; 
    } 
} 

然後,您可以用jQuery directly讀取結果,因爲沒有必要解析什麼:

$(document).ready(function() { 
    $.ajax({ 
    type: "POST", 
    url: "WebService.asmx/MyMethod", 
    data: "{}", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function(msg) { 
     // msg.d will be your array with 2 strings 
    } 
    }); 
}); 

另一種方法是隻包括一個參考:

<script src="WebService.asmx/js" type="text/javascript"></script> 

這將生成代理類以允許您直接調用Web方法。例如:

WebService.MyMethod(onComplete, onError); 

onComplete功能將收到與Web服務調用的結果一個參數,你的情況是JavaScript array 2串。在我看來,這比使用jQuery和擔心URL和HTTP負載更容易。

+0

如何使用WebMethod解析信息? – 2012-07-13 21:39:51

+0

@Grienders - 你在SOAP還是JSON中的迴應? '[WebMethod]'支持兩者。 – 2012-07-13 21:51:08

1

使用jQuery迭代器遍歷msg結果中的字符串,如下所示。

function myFunction() { 
    $.ajax({ ...... 
     success: function (msg) { 
      $.each(msg, function(index, value) { 
       alert(value); 
      }); 
     } 
    }); 
}; 
0

響應object將包含一個名爲d一個對象,它封裝從您的WebMethod返回的值。只需像這樣訪問它:

function myFunction() { 
    $.ajax({ ...... 
     success: function (msg) { 
      //how do I parse msg? 
      alert(msg.d); //alerts "fdsf", "gfdgdfgf" 
     } 
    }); 
}; 

看到這個question的一個解釋。

相關問題