如何将javascript中的JSON数组传递给我的代码隐藏文件

时间:2011-12-08 11:37:19

标签: c# javascript jquery .net json

我在aspx页面的javascript函数中获取了一个JSON对象。我需要从我的代码隐藏文件中获取此数据。我该怎么办?

我的javascript函数是:

 function codeAddress() 
    {
        var address = document.getElementById("address").value;
        var geocoder = new google.maps.Geocoder();            
        geocoder.geocode({ 'address': address }, function(results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
                map.setCenter(results[0].geometry.location);
                var marker = new google.maps.Marker({ map: map, position: results[0].geometry.location });
            }
            else {
                alert("Geocode was not successful for the following reason: " + status);
            }

            var requestParameter = '{' +
                        'output:"' + results + '"}';

            $.ajax({
                type: "POST",
                url: "Default.aspx/GetData",
                data: requestParameter,
                //contentType: "plain/text",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function(msg) {
                    alert(msg.d);

                }, 
                error: function() { alert("error"); } 
            });

        });
    }


   Default.aspx.cs

 [WebMethod]
public static string  GetData( Object   output) 
{
    return output.ToString();
}

我将输出作为对象数组而不是实际结果 - [object Object],[object Object],[object Object]。请给我一个解决方案来获得实际结果。我正在研究的JSON如下 http://maps.googleapis.com/maps/api/geocode/json?address=M%20G%20Road&sensor=false

1 个答案:

答案 0 :(得分:3)

在您的aspx页面上创建一个WebMethod,它将页面上的数组作为:

[WebMethod]
public static GetData( type[] arr)  // type could be "string myarr" or int type arrary - check this
{}

并发出json请求。

$.ajax({
  type: 'POST',
  url: 'Default.aspx/GetData',
  data: "{'backerEntries':" + backerEntries.toString() + "}",
  contentType: 'application/json; charset=utf-8',
  dataType: 'json',
  success: function(response) {}
});

或者您可以使用.post()。

检查ajax请求中的url: GetData必须在您发出ajax请求的页面上的Default.aspx上声明WebMethod。

检查此问题,了解如何格式化数组以发送到网络方法。
Why doesn't jquery turn my array into a json string before sending to asp.net web method?

请查看以下链接以供参考:
Handling JSON Arrays returned from ASP.NET Web Services with jQuery - 最好采取想法 How to post an array of complex objects with JSON, jQuery to ASP.NET MVC Controller?