我需要在codebehind从MyMethod返回一个字符串数组。但是我是否使用javascript
在aspx页面上解析它?
[WebMethod]
public static string[] MyMethod(){
return new[] {"fdsf", "gfdgdfgf"};
}
..........
function myFunction() {
$.ajax({ ......
success: function (msg) {
//how do I parse msg?
}
});
};
答案 0 :(得分:3)
首先,确保您使用[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服务调用结果的参数,在您的情况下是一个带有2个字符串的Javascript数组。在我看来,这比使用jQuery更容易,并且担心URL和HTTP有效负载。
答案 1 :(得分:0)
使用jQuery迭代器迭代msg结果中的字符串,如此。
function myFunction() {
$.ajax({ ......
success: function (msg) {
$.each(msg, function(index, value) {
alert(value);
});
}
});
};
答案 2 :(得分:0)
响应object
将包含一个名为d
的对象,它包装从WebMethod返回的值。只需访问它:
function myFunction() {
$.ajax({ ......
success: function (msg) {
//how do I parse msg?
alert(msg.d); //alerts "fdsf", "gfdgdfgf"
}
});
};
有关说明,请参阅此question。