4

我有一个从 WCF 服务获取坐标列表的 ASP.NET MVC3 应用程序。该服务返回一个带有一些属性(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
}

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

解决此问题的最佳方法是什么?

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

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

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

有任何想法吗?

4

2 回答 2

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 each 方法对数据做一些事情(在这种情况下我只是在做一个警报)。

于 2012-05-03T17:37:29.580 回答
0

好吧,这里有很多东西。

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

公共 JsonResult GetCodinates() { }

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

在你的 javascript

$.ajax({ url: '/controller/GetCoordinates', type: GET, dataType: 'json', success: function(data) { $.each(data, function (key, value) { //随便叫你什么正在这里将坐标放在地图上 } });

于 2012-05-03T17:37:05.833 回答