2013-10-17 23 views
8

Ricevo sempre l'avviso di 'errore' e non riesco a capire cosa c'è che non va. Sto solo cercando di recuperare la stringa ("testexpression") che invio. Deve essere qualcosa con la parte dati, perché senza un parametro funziona.Trasmissione dei dati con jquery ajax

ecco la parte 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> 

E questo è il controller:

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

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

    [HttpPost] 
    public ActionResult Index(string expression) 
    { 

     return Json(expression, JsonRequestBehavior.AllowGet); 

    } 

} 

(aggiornamento: il tipo è post, stavo solo cercando fuori con ottenere così, e io lasciato in)

risposta

12

È necessario inviare dati come stringa/json. Stai inviando un oggetto javascript. Inoltre, l'URL potrebbe bisogno di essere un URL assoluto e non un URL relativo

$("#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'); 
    } 
}) 
0

Sul lato back-end vi consiglio

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

Supponendo che si desidera inviare di nuovo un JSON reale e non solo alcuni stringa casuale.