2017-11-17 8 views
0

データをドロップダウンに表示してオートコンプリートを実装したいと思います。これを行うために、私はselect2、jQueryプラグインを使用しています。 私の問題は、検索ボックスに書かれた検索語句が、コントローラのメソッドにパラメータとして渡されていないことです。これは私のAjaxのリクエストです:パラメータとして検索語を渡せません

$('#someId').select2({ 
     minimumInputLength: 1, 
     allowClear: true, 

     ajax: { 
      url: "/controllerName/methodName", 
      dataType: "json", 
      type: "GET", 
      data: function (params) { 

       var queryParameters = { 
        term: params.term 

       } 
       return queryParameters; 

      }, 

      processResults: function (data) { 
       return { 
        results: $.map(data, function (students) { 
         return { 
          text: students.name, 
          id: students.id 
         } 
        }) 
       }; 
      } 
     } 
    }); 

そして、これはhtmlです:

<div class="form-group"> 
<label asp-for="someId" class="col-md-2 control-label"></label> 
<div class="col-md-4"> 
<select asp-for="someId" class="form-control" style="display:table-cell; 
width:100%"></select> 
</div> 
</div> 

これは、コントローラの私の方法です:

[HttpGet] 
     public IActionResult GetStudents(string searchTerm) 
    { 
     //some code 
    } 

は私のAjaxリクエストで何か問題はありますか?

+0

コントローラメソッドをご覧ください。あなたのブラウザのネットワークツールをチェックして、値が正しく送信されているかどうか確認しましたか? (これはGET要求なので、リクエストURLのクエリ文字列にあります)。これは、クライアント側またはサーバー側の問題であるかどうかを最初に説明します。 – ADyson

+0

@ADysonブラウザのネットワークツールを確認しました。パラメータはURLのクエリ文字列にあります。 – eli

答えて

0

"term"という変数を検索パラメータとして送信しています。しかし、コントローラは "searchTerm"という変数を期待しています。

変数名は一致する必要があります。そうでなければ、コントローラはクエリ文字列から何を選ぶべきかを知る必要がありますか?

特に、ブラウザから複数のパラメータが送信される非常に一般的な状況を考えてみましょう。その時点で、命名規則があり、正しいパラメータがコントローラメソッドの正しい変数と一致するようにすることが重要です。

関連する問題