2012-02-02 2 views
0

Je ne fais qu'examiner asp.net mvc car je veux passer de Webforms. J'essayais juste de tester en postant une chaîne en utilisant jQuery et en récupérant cette chaîne dans la réponse. Cependant, je ne sais pas comment accéder au paramètre post dans la méthode d'action du contrôleur.Comment accéder aux valeurs Http Post dans Action Méthode lors de la publication en utilisant jQuery

J'ai essayé d'utiliser la FormCollection mais il est vide (que je suppose est évident que je suis l'affichage à l'aide d'un appel ajax jQuery et non une forme)

$(function() { 
     $("#GetReport").click(function() { 
      $.ajax({ 
       type: 'POST', 
       url: '/Reports/GetReport', 
       data: 'Abracadabra Mercedes', 
       contentType: 'application/text;charset=utf-8', 
       dataType: 'text', 
       success: function (result) { 
        alert(result); 
       } 


      }); 
     }); 
    }); 

//Controller Code 
public class ReportsController : Controller 
    { 
     // 
     [HttpPost] 
     public ActionResult GetReport(string query) 
     { 


      ViewBag.Result = "Hello"; 

      ViewBag.Geronimo = query; 

      return View(); 

     } 

    } 

     //View Code 
@{ 
    Layout = null; 
} 

@ViewBag.Result + @ViewBag.Geronimo 

Répondre

1

Votre « données » doit être une liste de clé/valeurs comme sur une URL. Vous obtiendrez ensuite cette information dans le paramètre de requête de votre méthode Action.

par exemple.

$(function() { 
    $("#GetReport").click(function() { 
     $.ajax({ 
      type: 'POST', 
      url: '/Reports/GetReport', 
      data: 'query=Abracadabra Mercedes', 
      success: function (result) { 
       alert(result); 
      } 


     }); 
    }); 
}); 

voir http://www.tugberkugurlu.com/archive/working-with-jquery-ajax-api-on-asp-net-mvc-3-0-power-of-json-jquery-and-asp-net-mvc-partial-views pour plus d'informations.

Dans cet exemple, vous pouvez voir qu'il le fait. Cherchez:

var d = "itemId=" + itemId; 

Edit: Je viens d'essayer ici maintenant

<input type="button" value="Click" id="GetReport" /> 
<input type="text" id="tester"/> 

<h2>Index</h2> 
<script type="text/javascript"> 
$(function() { 
    $("#GetReport").click(function (e) { 
     var d = "input=" + $('#tester').val(); 
     debugger; 
     $.ajax({ 
      type: 'POST', 
      url: '/Home/test', 
      data: d, 
      success: function (result) { 
       alert(result); 
      } 

     }); 

     if (e && e.preventDefault) { 
      e.preventDefault(); 
     } 
    }); 
}); 

et

public class HomeController : Controller 
{ 
    [HttpPost] 
    public ActionResult Test(string input) 
    { 
     return new ContentResult() { Content = input }; 
    } 
+0

Nope, ne semble pas fonctionner. – shashi

+0

Ok a eu un coup et vous devez supprimer le type de contenu et de données et cela fonctionne très bien. –

+0

Yup, ça marche bien maintenant. Merci beaucoup! Je me demande quel effet ont ces deux paramètres que cela ne fonctionnait pas plus tôt. – shashi

Questions connexes