将数组转换为JSON并将其传递给asmx

时间:2010-05-03 11:49:49

标签: jquery json

我正在尝试使用JSON.stringify()(来自json [dot] org的json2.js)将JavaScript数组转换为JSON字符串并将其传递给asmx web方法。我使用jQuery AJAX。

调用到达web方法,我将List <Object>作为参数,但我在调试模式下得到一个列表。

我的JSON字符串看起来与所有数据形成良好,我甚至尝试在JSON字符串的“名称”周围使用单引号和双引号(转义)。请帮忙。

3 个答案:

答案 0 :(得分:5)

[WebMethod]
public void SomeMethod(List<object> param)
{
 ....
}

将接受如下所示的JSON字符串:

'{"param": ["xx", "zz", "yy"]}'

所以,尝试这样的事情:

var data = JSON.stringify({param: myarray});

答案 1 :(得分:0)

http://haacked.com/archive/2010/04/15/sending-json-to-an-asp-net-mvc-action-method-argument.aspx

此链接也帮助了我,因为我希望使用模型来提供json数据。

作为补充说明,我试图使用$ .post(...),但在我将其分解为$ .ajax调用并指定内容类型之前,我没有任何运气。

答案 2 :(得分:0)

我找到了问题的解决方案

解决方案prashiddha.com.np

            <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

            <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

            <html xmlns="http://www.w3.org/1999/xhtml">
            <head runat="server">
            <title></title>

            <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js"></script>
            <script type="text/javascript">
                var url = '<%=ResolveUrl("~/WebService.asmx/HelloWorld")%>';
                $(document).ready(function() {
                    $('#txtAutoSuggest').keyup(function() {
                    var str = $("#txtAutoSuggest").val();
                    var a = JSON.stringify({ name: str });
                    CallService(a);
                });
            });

            function CallService(a) {
            $.ajax({
                type: "POST",
                url: url,
                data: a,
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function(data, status) {
                $('#lblResult').text(data.d);
            },
            error: Error
            });
            }

            function Error(request, status, error) {
                $('#lblResult').text("Not Matched");
            }
            </script>
            </head>
            <body>
            <form id="form1" runat="server">
            <div>
            <asp:TextBox ID="txtAutoSuggest" runat="server"></asp:TextBox>
            <asp:Label ID="lblResult" Text=" " Width="100%" runat="server" />
            </div>
            </form>
            </body>
            </html>