将数据从ASp.NET MVC Controller传递到JavaScript函数

时间:2012-05-03 17:24:35

标签: javascript jquery asp.net-mvc

我有一个ASP.NET MVC3应用程序,它从WCF服务获取坐标列表。此服务返回具有一些属性的列表(Xcoor和Ycoor)。

   public List<Location> GetCoordinate()
        {
            sensor = new Location();

            List<Location> coordinateList = sensor.GetSensorInformation();

            return coordinateList;

        }

在我的网页中,我有一个JavaScript函数,它接受2个参数并在页面上显示坐标(在地图上)

function GetLocation(y, x){
//my code here
}

我想从控制器中获取coordiates列表并将它们传递给JS函数进行处理。

最好的方法是什么?

我尝试使用以下内容,但我不知道如何解析结果

 $.ajax({
            url: '@Url.Action("GetCoordinate")',
            type: 'GET',
             dataType: 'xml',
            success: function(result) {

            },
            error: function (xhr, ajaxOptions, thrownError){
                    alert(xhr.status);
                    alert(thrownError);}
        });

有什么想法吗?

2 个答案:

答案 0 :(得分:8)

将您的控制器更改为以下内容:

public ActionResult GetCoordinate()
{
    sensor = new Location();

    List<Location> coordinateList = sensor.GetSensorInformation();

    return Json(coordinateList, JsonRequestBehavior.AllowGet);

 }

现在你的控制器动作正在返回jQuery可以处理的JSON。

更改您的jQuery方法:

$.ajax({
    url: '@Url.Action("GetCoordinate")',
    type: 'GET',
    dataType: 'json',
    success: function(data) {
        // process the data coming back
        $.each(data, function(index, item) {
            alert(item);
        });
    },
    error: function (xhr, ajaxOptions, thrownError) {
        alert(xhr.status);
        alert(thrownError);
    }
});

现在你的AJAX方法知道它正在处理JSON数据。你可以使用jQuery的每个方法对数据做一些事情(在这种情况下我只是做一个警报)。

答案 1 :(得分:0)

这里有很多东西。

在控制器上定义一个函数定义一个方法

public JsonResult GetCoodinates() { }

在方法中使用您的WCF服务器并将结果转换为JsonResult。

在你的javascript中

$。AJAX({ url:'/ controller / GetCoordinates', 类型:GET, dataType:'json', 成功:函数(数据){ $ .each(data,function(key,value){ //在这里做你正在做的任何电话,把坐标放在地图上 } });