来自$ .getJSON的响应返回null

时间:2011-01-13 15:43:12

标签: asp.net-mvc ajax json

我想使用Jquery getJSON与.NET 3.5,MVC2和JQuery1.4.1调用服务器端方法。

我已经遵循了一些在线教程,但是无法使用serveride方法返回除null之外的任何内容。所有3个警报都在下面的JS中触发,我可以在我的服务器端方法(也在下面)中找到一个断点。在我开始的时候,我已经包含了所有客户端代码,以防我做了一些愚蠢的事情。知道我做错了什么 - 我花了很多年时间试图从服务器上获取一个值。非常感谢。

我的客户端代码是:(每行都缺少开头<)

<@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
    Home Page
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">    

<form id="form1" runat="server">    
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="True">
</asp:ScriptManager>   

<script src="../../Scripts/jquery-1.4.1.js" type="text/javascript"></script>   

<script>
function test() 
{
  alert("Here");  
  $.getJSON(
    "/Home/Test", null, function(data, status) { alert("Success!"); alert(data); });
};      
</script>

<asp:Button ID="Button1" runat="server" Text="Call Page Methods" OnClientClick="return test()"/> 

</form>        

</asp:Content>

我的服务器端代码是:

public JsonResult Test()
{
  string fooString = "test";
  return Json(fooString, JsonRequestBehavior.AllowGet);  
}

1 个答案:

答案 0 :(得分:0)

我认为你在这里混合一些观念。 ASP.NET和ASP.NET MVC不是一回事。从您的代码片段我假设这是一个ASP.NET MVC应用程序(您的视图继承自System.Web.Mvc.ViewPage)。在ASP.NET MVC应用程序<asp:Button runat="server"<form runat="server">以及<asp:ScriptManager不再使用,您可以忘记这些,并且没有页面方法,有控制器和操作。

因此,您可以在视图中执行以下操作:

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">    

    <script src="../../Scripts/jquery-1.4.1.js" type="text/javascript"></script>   
    <script type="text/javascript">
    $('#btnTest').click(function() {
        $.getJSON('/Home/Test', null, function(data) { 
            alert("Success!");
        });
        return false;
    });
    </script>
    <input type="button" id="btnTest" name="test" />
</asp:Content>