2010-04-22 64 views
0

我想通过以下方式来调用其他网站属于MVC控制器页面方法:在ASP.NET制作一个Ajax请求一个页面方法MVC 2

$.ajax({ 
      type: "GET", 
      url: "http://localhost:54953/Home/ola", 
      data: "", 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function(data) { 
       console.log(data.Name); 
      } 
     }); 

方法代码如下,很简单,只是为了测试:

public ActionResult ola() 
    { 

     return Json(new ActionInfo() 
     { 
      Name = "ola" 
     },JsonRequestBehavior.AllowGet); 

    } 

我已经看到了这个形式给出了正在此间建议,实际上我很喜欢它,它应该工作...

当我运行此,萤火虫得到200行,但d ata收到的是null。

我已经尝试了很多不同的方法,就像在文本数据(希望授予我“(空字符串)”,而不只是“空”),或在服务器方法将在返回字符串...

你能告诉我我做错了什么吗?

谢谢你在前进,

若昂

+0

你是什么ActionInfo.Name成员的访问修饰符?如果它是非公开的,它将不会被序列化为JSON结果。 – Jono 2010-04-22 22:47:26

+0

您是否尝试过调试JQuery?把语句“调试器”;在你的成功方法中,你可以检查数据。 – Mac 2010-04-22 23:29:40

回答

1

您是否尝试过给您回JSON是这样的...

public ActionResult ola() 
{ 
    return Json(new { Name = "ola" }, JsonRequestBehavior.AllowGet); 
} 
0

你可以尝试从控制器操作方法返回JsonResult。方法签名将是public JsonResult ola()。希望能帮助到你。

1

控制器:

public ActionResult Ola() 
{ 
    // No need to use a custom ActionInfo type here, an anonymous type 
    // will be just fine: 
    return Json(new { Name = "ola" }, JsonRequestBehavior.AllowGet); 
} 

查看:

$(function { 
    $.getJSON('/home/ola', function(json) { 
     alert(json.Name); 
    }); 
}); 
0

感谢所有的反馈。我发现我所做的每件事都是对的,也是错的。

这些请求都是有效的,但是请求是在不同的域中进行的,浏览器自动阻止(IE除外)。这是一个安全问题。 但是由于请求是为了在移动设备上工作,所以当我在那里测试时,它完美地工作。

再次感谢大家谁回答,我会采取一些,如果你调用Ajax跨域如下所示:)