我在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
答案 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?