web-dev-qa-db-fra.com

Passer des données avec jquery ajax

J'ai toujours l'alerte d'erreur et je n'arrive pas à comprendre ce qui ne va pas. J'essaie simplement de récupérer la chaîne ("testexpression") que j'envoie. Ce doit être quelque chose avec la partie data, car sans paramètre, cela fonctionne.

Voici la partie jQuery:

<script>

$("#meaning").blur(function () {

    $.ajax({ 
        type: "POST",
        url: '/GetMeaning/',
        data: {"expression" : "testexpression"},
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: successFunc,
        error: errorFunc
    });

    function successFunc(data, status) {
        $("#dictionaryDropDown").html(data);
    }

    function errorFunc() {
        alert('error');
    }
})
</script>

Et voici le contrôleur:

    public class GetMeaningController : Controller
{
    //
    // GET: /GetMeaning/

    [HttpGet]
    public ActionResult Index()
    {
        return View();
    }

    [HttpPost]
    public ActionResult Index(string expression)
    {

        return Json(expression, JsonRequestBehavior.AllowGet);

    }

}

(mise à jour: le type est post, je venais de l'essayer avec get aussi, et je l'ai laissé)

12
Tyler Durden

Vous devez envoyer les données sous forme de chaîne/json. Vous envoyez un objet javascript. De plus, il se peut que l'URL doive être une URL absolue et non une URL relative.

$("#meaning").blur(function () {

    $.ajax({ 
        type: "POST",
        url: '/GetMeaning/',
        data: JSON.stringify({expression: "testexpression"}),
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: successFunc,
        error: errorFunc
    });

    function successFunc(data, status) {
        $("#dictionaryDropDown").html(data);
    }

    function errorFunc() {
        alert('error');
    }
})
16
Dennis Flagg

À l'arrière je recommande

return Json(
    new { this.expression = expression },
    JsonRequestBehavior.AllowGet);

En supposant que vous souhaitiez renvoyer un JSON réel et pas simplement une chaîne aléatoire.

0
beautifulcoder