2017-05-11 1 views
0

je l'appel AJAX suivant, simplifié pour essayer de broches point le problème:AJAX passage JSON Controller comme String Renvoie Null

$('#userUpdateForm').submit(function (e) { 
      $.ajax({ 
       type: "POST", 
       url: '@Url.Action("submitForm", "Home")', 
       data: JSON.stringify({ 
        'blue': window.glbBlue, 
        'eg2': 'eg3' 
       }), 
       contentType: "application/json; charset=utf-8", 
       success: function (result) { 
        alert("Success"); 
       }, 
       error: function (result) { 
        alert("A problem occured when submitting the form."); 
       } 
      }); 
     e.preventDefault(); 

     }); 

Cela appelle dans la méthode suivante:

[HttpPost] 
    public ActionResult submitForm(string json) 
    { 
     System.Diagnostics.Debug.WriteLine("made it here"); 

     var check = System.Web.Helpers.Json.Decode(json); 

     System.Diagnostics.Debug.WriteLine(check); 
     System.Diagnostics.Debug.WriteLine(check.glbBlue); 

     return View(); 
    }  

Cependant , le JSON que le contrôleur reçoit est nul. Pourquoi cela arrive-t-il? Je peux voir dans le navigateur qu'il y a une charge utile de demande, avec les valeurs auxquelles je m'attendrais. 'Window.glbBlue' est une valeur globale, dont je sais aussi qu'elle a été correctement définie car des alertes ont été utilisées pour vérifier sa valeur.

Répondre

2

vous envoyer des données

data: JSON.stringify({ 
       'blue': window.glbBlue, 
       'eg2': 'eg3' 
      }) 

signifie votre action recevoir deux paramètres blue et eg2 mais vous avez reçu un seul paramètre json non fourni. Pour cette raison, json est null. Vous pouvez modifier public ActionResult submitForm(string json) {} à public ActionResult submitForm(string blue,string eg2) {}.

OU

données: JSON.stringify ({JSON: "quelque chose"})

+0

grâce, qui a fixé pour moi! – peanut

+0

vous êtes les bienvenus. @ User3316147 – Ashiquzzaman