2017-04-26 19 views
0

何らかの理由で、私のAJAX要求を使用してコントローラのアクションにIDのリストを渡すことができません。私は以下の404コンソールエラーを取得しています。誰がなぜこれが起こっているのか教えてもらえますか?C#コントローラへのAjax呼び出しが動作しない

エラー

は、リソースの読み込みに失敗しました:サーバーは、404の状態(見つかりません) http://localhost:8088/Clients/VolDashboard/getViewsAssigned?candidateIds%5B%5D=177

コントローラーアクション

public JsonResult getViewsAssigned(List<long> candidateIds) 
    { 
     long clientId = webRequestState.ClientId.Value; 
     long clientUserId = webRequestState.ClientUserId.Value; 
     return Json(clientViewService.getViewsAssignedToCandidates(candidateIds, clientId, clientUserId), JsonRequestBehavior.AllowGet); 
    } 

AJAXリクエスト

と答え データプロパティを通じての
$.ajax({ 
      type: "GET", 
      url: "../Clients/VolDashboard/getViewsAssigned?" + $.param({ candidateIds: populateSelectedCandidateIds() }), 
      success: Success, 
      error: Errors 
     }); 
+0

公共化するJsonResult getViewsAssigned(一覧 candidateIds)が正しくありません。 – loneshark99

答えて

0

問題は、C#メソッドがパラメータタイプとしてList<long>を想定していることです。あなたのURLによれば、あなたはint(ただ一つのlongに変換することができます)を送るだけです。問題はコレクションではないため、ルートを見つけることができないということです。 404 HTTPコードが正しいです。

このような状況で、リストをURLエンコードしている場合、おそらく最善の策は文字列として渡すことです。

$.ajax({ 
    type: "GET", 
    url: "../Clients/VolDashboard/getViewsAssigned?" + 
      $.param({ candidateIds: 
       populateSelectedCandidateIds().toString() 
      }), 
    success: Success, 
    error: Errors 
}); 

その後、あなたはこのようなあなたのC#の方法を調整する必要があります:

public JsonResult getViewsAssigned(string candidateIds) 
{ 
    List<long> idList = candidateIds.Split(',').Select(long.Parse).ToList(); 
    long clientId = webRequestState.ClientId.Value; 
    long clientUserId = webRequestState.ClientUserId.Value; 
    return Json(clientViewService.getViewsAssignedToCandidates(idList, clientId, clientUserId), JsonRequestBehavior.AllowGet); 
} 
+0

これは魅力的に機能しました!どうもありがとうございます!!! –

0

てみパスパラメータ:

var data = populateSelectedCandidateIds(); 
$.ajax({ 
type: "GET", 
data: {candidateIds: data}, 
url: "../Clients/VolDashboard/getViewsAssigned", 
success: Success, 
error: Errors 
}); 

また、主要なアイデアを得るために受け入れ答えhereを見ることができます。

関連する問題