web-dev-qa-db-fra.com

Comment passer plusieurs paramètres d'un appel ajax au contrôleur MVC

J'ai le contrôleur comme ci-dessous:

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

Et j'ai besoin d'un appel ajax à cette méthode de contrôleur et passe les deux arguments d'entrée et de valeur

Et mon appel ajax est comme ci-dessous:

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

Je ne parviens pas à transmettre la valeur au paramètre name .. La valeur du paramètre name devient nulle .. merci de m'aider .. Merci d'avance.

18
DS kumar

Vous créez un HTTP POST, mais essayez de transmettre des paramètres avec la syntaxe de la chaîne de requête GET. Dans un POST, les données sont transmises sous forme de paramètres nommés et n'utilisent pas la syntaxe param=value&foo=bar. La méthode ajax de jQuery vous permet de créer un objet javascript avec les paramètres nommés, comme suit:

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

En plus des messages de @xdumain, je préfère créer un objet de données avant un appel ajax afin que vous puissiez le déboguer.

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

Maintenant, utilisez-le dans l'appel 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

Je l'ai fait avec l'aide de cette question 

jquery obtient une chaîne de requête à partir d'une URL

alors voyons comment nous allons utiliser cette fonction 

// 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;
}

et maintenant, utilisez-le dans Ajax call

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

c'est tout, mais si vous voulez savoir how to use this function ou not send all the query string parameters, retournez à réponse réelle

0
Basheer AL-MOMANI