J'essaye de faire un appel ajax à la méthode du contrôleur. sans paramètre cela fonctionne bien. Une fois que j'ajoute le paramètre, je reçois toujours un paramètre nul pour le cotroller. Je pense que j'ai correctement fait le paramètre passant dans l'appel ajax.Passer des paramètres dans un appel ajax
<script type="text/javascript">
$(document).ready(function() {
$('#lstStock').change(function() {
var serviceURL = '<%= Url.Action("GetStockPrice", "Delivery") %>';
var dropDownID = $('select[id="lstStock"] option:selected').val();
alert(dropDownID); // here i get the correct selected ID
$.ajax({
type: "POST",
url: serviceURL,
data: '{"stockID":"' + dropDownID + '"}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: successFunc,
error: errorFunc
});
function successFunc(data, status) {
alert(data.Result);
}
function errorFunc() {
alert('error');
}
})
});
</script>
Controller:
[HttpGet]
public ActionResult GetStockPrice()
{
return View();
}
[HttpPost]
[ActionName("GetStockPrice")]
public ActionResult GetStockPrice1(string stockID)//I get the null parameter here
{
DeliveryRepository rep = new DeliveryRepository();
var value = rep.GetStockPrice(stockID);
return Json(new { Result = value }, JsonRequestBehavior.AllowGet);
}
avec votre solution J'ai également dû supprimer contentType: "application/json; charset = utf-8" alors seulement il a commencé à fonctionner. une idée? – chamara
Vous avez besoin de l'application 'contentType:"/json "' en faisant stringify pour indiquer au navigateur de bien envoyer les données en json. Le paramètre contentType par défaut fonctionnera lors de la transmission de données telles que '{stockID: dropDownID}' car il est interprété comme un objet/une donnée json valide. –