web-dev-qa-db-ja.com

ajax呼び出しからMVCコントローラーに複数のパラメーターを渡す方法

私は次のようなコントローラを持っています:

public ActionResult Save(string input, string name) {
    //Some code
    return PartialView();
}

そして、このコントローラーメソッドへのajax呼び出しが必要で、2つの引数inputとvalueを渡します

そして、私のajaxコールは以下のようなものです:

$.ajax({
    url: '/Home/Save',
    type: 'POST',
    async: false,
    dataType: 'text',
    processData: false,
    data: "input=" + JSON.stringify(data) + "&name =" + $("#name").val(),
    success: function (data) {
    }
});

名前パラメーターに値を渡すことができません。名前パラメーターの値がnullになっています。助けてください。

19
DS kumar

HTTP POSTを作成していますが、GETクエリ文字列構文でパラメーターを渡そうとしています。 POSTでは、データは名前付きパラメーターとして渡され、param=value&foo=bar構文を使用しません。 jQueryのajaxメソッドを使用すると、次のように名前付きパラメーターでjavascriptオブジェクトを作成できます。

$.ajax({
  url: '/Home/SaveChart',
  type: 'POST',
  async: false,
  dataType: 'text',
  processData: false,    
  data: { 
      input: JSON.stringify(IVRInstant.data), 
      name: $("#wrkname").val()
  },
  success: function (data) { }
});
23
xdumaine

@xdumainによる投稿に加えて、ajaxを呼び出す前にデータオブジェクトを作成して、デバッグできるようにします。

var dataObject = JSON.stringify({
                    'input': $('#myInput').val(),
                    'name': $('#myName').val(),
                });

今、ajax呼び出しで使用します

$.ajax({
          url: "/Home/SaveChart",
          type: 'POST',
          async: false,
          dataType: 'json',
          contentType: 'application/json',
          data: dataObject,
          success: function (data) { },
          error: function (xhr) { }            )};
2
Himalaya Garg

この質問を手伝って

jquery URLからクエリ文字列を取得

この関数の使用方法を見てみましょう

// Read a page's GET URL variables and return them as an associative array.
function getUrlVars()
{
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    for(var i = 0; i < hashes.length; i++)
    {
        hash = hashes[i].split('=');
        vars.Push(hash[0]);
        vars[hash[0]] = hash[1];
    }
    return vars;
}

そして今、それをAjax call

"ajax": {
    url: '/Departments/GetAllDepartments/',                     
    type: 'GET',                       
    dataType: 'json',                       
    data: getUrlVars()// here is the tricky part
},

それだけですが、知りたい場合はhow to use this functionまたはnot send all the query string parameters実際の回答 に戻る

0