Wie

2013-11-25 7 views
16

Mehrere Parameter Ajax-Aufruf zu MVC-Controller zu übergeben habe ich den Controller wie die folgenden:Wie

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

Und ich brauche diese Controller-Methode einen Ajax-Aufruf und übergeben Sie die zwei Argumente Eingang und Wert

Und mein ajax-Aufruf ist wie unten:

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

ich nicht in der Lage bin, den Wert auf den Namen Parameter zu übergeben .. der Wert im Namensparameter wird immer null .. bitte helfen Sie mir .. Vielen Dank im Voraus

+0

möglich Duplikat [Jquery Ajax-Aufruf - Datenparameter sind nicht auf MVC-Controller Aktion übergeben werden] (http://stackoverflow.com/questions/2002163/jquery-ajax-call-data-parameter-sind-nicht-übergeben-an-mvc-controller-action) – xdumaine

Antwort

21

Sie machen einen HTTP-POST, aber versuchen, Parameter mit der GET-Abfrage String-Syntax übergeben. In einem POST werden die Daten als benannte Parameter übergeben und verwenden nicht die Syntax param=value&foo=bar. jQuery Ajax-Methode verwenden, können Sie ein JavaScript-Objekt mit den genannten Parametern erstellen, etwa so:

$.ajax({ 
    url: '/Home/SaveChart', 
    type: 'POST', 
    async: false, 
    dataType: 'text', 
    processData: false,  
    data: { 
     input: JSON.stringify(IVRInstant.data), 
     name: $("#wrkname").val() 
    }, 
    success: function (data) { } 
}); 
-3
$.ajax({ 
    type: "POST", 
    contentType: "application/json; charset=utf-8", 
    url: "ChnagePassword.aspx/AutocompleteSuggestions", 
    data: "{'searchstring':'" + request.term + "','st':'Arb'}", 
    dataType: "json", 
    success: function (data) { 
    response($.map(data.d, function (item) { 
     return { value: item } 
    })) 
    }, 
    error: function (result) { 
     alert("Error"); 
    } 
}); 
+2

Bitte fügen Sie einige Kommentare hinzu, wie dies die Frage beantwortet und die richtige Formatierung verwendet – avalancha

0

Das habe ich von dieser Frage mit Hilfe

jquery get querystring from URL

so sehen lassen wie werden wir diese Funktion verwenden

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

und jetzt ist es nur in Ajax call

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

das ist verwenden alle, aber wenn Sie wissen wollen how to use this function oder not send all the query string parameters zu actual answer zurück

1

Neben Beiträge @xdumain, ich ziehe Objekt vor Ajax Daten zu erstellen Rufen Sie an, damit Sie es debuggen können.

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

Jetzt ist es in Ajax-Aufruf verwenden

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