2010-12-22 112 views
13

我想在我的代碼中使用JQuery與Ajax調用一個簡單的方法。但是我每次都得到一個404沒有發現的異常。不幸的是,這是一個Web表單解決方案所以我沒有MVC的所有額外待遇:(Ajax方法調用

它確實進入了javascript方法,並給出了警報,但不會進入我的c#方法。我以前使用這種jquery方法的經驗是在MVC網站。難道是用的WebForms網站兼容

我的JavaScript:

$(document).ready(function() { 

       $('#btn_<%=UserStuff.tag %>').click(function() {      

        var value = $('#<%#Eval("tag") %>twink').val(); 
        something(value);      
       }); 
      }); 


      function something(theval) { 

      alert(theval); 

       $.ajax({ 
        type: "POST", 
        url: "/Default.aspx/MyMethod?something=" + theval, 
        data: "{}", 
        contentType: "application/json; charset=utf-8", 
        dataType: "json", 
        success: function(msg) { 
         alert(msg); 
        } 
       }); 
      } 
} 

而我的C#代碼是:提前

public JsonResult MyMethod(string something) 
{ 
    JsonResult ret = new JsonResult();  

    return ret; 
} 

感謝

回答

34

您的方法返回JsonResult。這是MVC特有的,你不能在webforms應用程序中使用它。

如果你想後面調用代碼中的方法在經典的WebForms應用程序,你可以使用PageMethods

[WebMethod] 
public static string GetDate() 
{ 
    return DateTime.Now.ToString(); 
} 

然後調用方法:

$.ajax({ 
    type: 'POST', 
    url: 'PageName.aspx/GetDate', 
    data: '{ }', 
    contentType: 'application/json; charset=utf-8', 
    dataType: 'json', 
    success: function(msg) { 
     // Do something interesting here. 
    } 
}); 

這裏是一個完整的工作我寫給你的例子:

<%@ Page Language="C#" %> 
<%@ Import Namespace="System.Web.Services" %> 
<script type="text/C#" runat="server"> 
    [WebMethod] 
    public static string SayHello(string name) 
    { 
     return "Hello " + name; 
    } 
</script> 
<!DOCTYPE html> 
<html> 
<head> 
    <title></title> 
    <script type="text/javascript" src="/scripts/jquery-1.4.1.js"></script> 
    <script type="text/javascript"> 
     $(function() { 
      $.ajax({ 
       type: 'POST', 
       url: 'default.aspx/sayhello', 
       data: JSON.stringify({ name: 'John' }), 
       contentType: 'application/json; charset=utf-8', 
       dataType: 'json', 
       success: function (msg) { 
        // Notice that msg.d is used to retrieve the result object 
        alert(msg.d); 
       } 
      }); 
     }); 
    </script> 
</head> 
<body> 
    <form id="Form1" runat="server"> 

    </form> 
</body> 
</html> 

PageMethods are not limi適用於簡單的參數類型。您可以使用任何類型作爲輸入和輸出,它會自動JSON序列化。

+0

yeaaaaaaaaaaaaaaaaaaaaaah !!!!!!!!!!!!非常非常棒!有用!謝謝!!!!!!!!祝聖誕快樂! – Funky 2010-12-22 11:08:17