2012-10-22 20 views
15

MVC 4 with Razorで$ .ajaxを使用してAJAXリクエストを作成しようとしています。私はそれを実装する方法がわかりません。

this videoを使用してデータを返すリンク駆動型呼び出しを正常に作成できましたが、jquery関数の内部から同じことをすることはできません。私はこれを行う方法の基本的な例を見つけることができないようです。 これは、私が働いているものです:

HomeController.cs

 public string test(){ 
      return "It works"; 
     } 

View.cshtml

function inventory(dealerID) { 
    $.ajax({ 
     url: '@Url.Action("HomeController","test")', 
     data: {dealerID: dealerID}, 
     type: 'POST', 
     success: function(data) { 
      process(data); 
     } 
    }); 
} 

答えて

28

あなたはちょうどそれActionResultようにする必要があります。また、Ajax POSTを使用している場合は、アクションをHttpPost属性でマークする必要があります。これを試してみてください:

[HttpPost] 
public ActionResult test(string dealerID) 
{ 
    return Content("It works"); 
} 

編集実際には、構文を使用して他のいくつかの問題があります。

  1. Url.Action

    は間違った順序で、コントローラ/アクションパラメータを持っている - 最初の「ACTIONNAME」、そして「コントローラ名」Url.Actionについては
  2. 、あるべきコントローラクラスは「にHomeControllerを」であれば、あなただけの必要があります」
  3. JQueryのオプション構文が間違っている - success: function(data) {}である必要があります。

$.ajax({ 
    url: '@Url.Action("test", "Home")', 
    data: {dealerID: dealerID}, 
    type: 'POST', 
    success: function(data) { 
     alert(data); 
    } 
}); 
+0

ありがとうございました!それは今働く。 – Mason

+0

あなたの例では、 'test()'メソッドはJSONから 'dealerId'をどのように受け取っていますか?私はそれがメソッドにパラメータとして渡され、それを省略したと仮定する必要がありますか? – crush

+3

@crushはい、そうです。 MVCルーティングシステムは、クエリ文字列、ポストデータ、またはルートデータなど、使用可能な場所からコントローラパラメータを引き出すのに十分な柔軟性を備えています。 – McGarnagle

関連する問題