2011-09-21 14 views
0

いくつかの情報を読み終えたら、これはうまくいくはずです。 JS関数が呼び出され、jQueryアニメーションが回転していますが、アクションは投稿されていません。同様に、startDateとendDateをテキスト入力から提供することを希望しますが、現在ではハードコーディングさえも機能しません。みんな、ありがとう!jQueryを使用したコントローラへの投稿

コントローラー:

public class NewsController : Controller 
{ 
    [HttpPost] 
    public ActionResult Search(string lang, string pageNumber, string startDate, string endDate, string search) 
    { 
    } 
} 

ビュー:

@using (Html.BeginForm()) 
{ 
    <a href="#" id="go_button">...</a> 
} 
<script type="text/javascript"> 
$('#go_button').click(function() { 
     $.post("/News/Search", { startDate: 'start', endDate: 'end'}); 
}); 

+1

コントローラアクションはブレークポイントを置くと呼び出されません。あなたがFireBugを見るとどうなりますか?あなたはAJAXリクエストがまったく送信されているのを見ることができますか? –

+0

Firebugを破棄し、実際にPOSTを試みているかどうか確認してください。あなたがそれがクライアントかサーバー上にあるかどうかを知ることができます(うまくいけば) – Dave

+0

@DarinDimitrov私たちは同じページにありますように嬉しく思います): – Dave

答えて

0

は、スクリプトがいずれかのDOM内のアンカーの後に配置されていることを確認したりdocument.readyにラップ:

$(function() { 
    $('#go_button').click(function() { 
     var url = '@Url.Action("Search", "News")'; 
     $.post(url, { startDate: 'start', endDate: 'end' }, function() { 
      alert('success'); 
     }); 
     return false; 
    }); 
}); 

これは動作するはずです。少なくとも、あなたの行動を呼び出す必要があります。

public class NewsController : Controller 
{ 
    [HttpPost] 
    public ActionResult Search(string lang, string pageNumber, string startDate, string endDate, string search) 
    { 
     return Json(new { success = true }); 
    } 
} 
+0

近づく、ありがとう。これでアクションが呼び出されますが、コールバック関数を削除しても呼び出されません。同様に、私のコントローラはビ​​ュー "return View();"を返します。それは今それをしません。助言がありますか ? – mishap

+0

@Chuchelo、コールバック関数を削除することは非常に奇妙なようです。コールバックを削除したときにAJAXリクエストが送信されているかどうかを確認するには、FireBugまたはChrome開発ツールバーでチェックアウトします。ビューを返す場合は、先に進みますが、たとえばDOMに注入するなど、結果に役立つ何かを行うための成功のコールバックがあることを確認してください。そうでなければ、AJAXリクエストは実際には役に立たない。 –

+0

これらの質問はすべて申し訳なく思っていますが、私は初心者です。 成功コールバック関数はDOMへのビューを挿入しますか?ビューに完全に新しいページが含まれている場合どうすれば現在のDOM(ドキュメント要素)をクリアし、ビューHTMLを挿入できますか?私はこれをすべてやっているのは、異なるボタンが異なるアクションを呼び出すからです。そうでなければ、@@ using(Html.BeginForm(ControllerName))を使用したでしょう。 – mishap

0

$ .postだけに要求をポストします:何このアクションは、それが例外をスローか何かが別の問題ですが、少なくとも、あなたがそれに入ると正しく割り当てstartDateendDateパラメータを持つ必要があるかどうか、いサーバーが自動的にページを更新することはありません。

DOMにビューを挿入するために使用するsuccess関数を含める必要があります。

$(function() { 
    $('#go_button').click(function() { 
     var url = '@Url.Action("Search", "News")'; 
     $.post(url, { startDate: 'start', endDate: 'end' }, function() { 
      $('#result').html(data); 
     }); 
     return false; 
    }); 
}); 

jqueryの中でこのような何かを試してみてくださいこれはあなたの行動に投稿し、ID「結果」で要素の中に返されたビューを配置します。

レイアウトを含まない場合は、PartialViewを返すようにしてください。

+0

ありがとうございます、私はすでに理解していますが、返された結果をドキュメント要素に入れることができるので、部分的ではなく全体のビューを表示することができます。ところで、私が苦労している元々の問題はここにあるhttp://stackoverflow.com/questions/7508233/posting-same-form-to-different-actions-depending-on-button-clicked、私ができるかどうかわからない見てみるが、これらの質問がどこから来たのかを尋ねる。あなたの助けをありがとう! – mishap

関連する問題