Reputation: 5524
I'm trying to proccess a jSON request, the url used in getJSON is
http://localhost:52563/Documentos/Docs/CondicionesMostrar?NumIdTransaccion=16091&NumIdConcepto=421.
The text returned by my partialview using this:
string ljListaItems = Json.Encode(loListaItems).ToString();
@ljListaItems
it return this data
[{"MedidasRelativas":false,"CssClass":"ParadigmaNTouchItem","CssClassAlterna":"ParadigmaNTouchItemAlterno","CssClassImage":"","CssClassTitle":"","CssClassFlag":"","ajaxRegion":"DetalleCondiciones","ajaxAction":"onclick=\"/Documentos/Docs/CondicionesAgregar?NumIdtransaccion=16090&IntIdCondicion=1&status=False\"","ajaxActionIzq":"","ajaxEnabled":true,"ajaxMethod":0,"ajaxMode":0,"ajaxRegionLoading":"#trabajando","ajaxData":"","image":"","editarCantidad":false,"cantidad":0,"useCssAlterno":false,"id":"I_Cond_1","title":"sin pulpo","flag":null,"width":0,"height":0,"top":0,"left":0},{"MedidasRelativas":false,"CssClass":"ParadigmaNTouchItem","CssClassAlterna":"ParadigmaNTouchItemAlterno","CssClassImage":"","CssClassTitle":"","CssClassFlag":"","ajaxRegion":"DetalleCondiciones","ajaxAction":"onclick=\"/Documentos/Docs/CondicionesAgregar?NumIdtransaccion=16090&IntIdCondicion=2&status=False\"","ajaxActionIzq":"","ajaxEnabled":true,"ajaxMethod":0,"ajaxMode":0,"ajaxRegionLoading":"#trabajando","ajaxData":"","image":"","editarCantidad":false,"cantidad":0,"useCssAlterno":false,"id":"I_Cond_2","title":"sin salami","flag":null,"width":0,"height":0,"top":0,"left":0}]
That is a representation of this class:
public class RootObject
{
public bool MedidasRelativas { get; set; }
public string CssClass { get; set; }
public string CssClassAlterna { get; set; }
public string CssClassImage { get; set; }
public string CssClassTitle { get; set; }
public string CssClassFlag { get; set; }
public string ajaxRegion { get; set; }
public string ajaxAction { get; set; }
public string ajaxActionIzq { get; set; }
public bool ajaxEnabled { get; set; }
public int ajaxMethod { get; set; }
public int ajaxMode { get; set; }
public string ajaxRegionLoading { get; set; }
public string ajaxData { get; set; }
public string image { get; set; }
public bool editarCantidad { get; set; }
public int cantidad { get; set; }
public bool useCssAlterno { get; set; }
public string id { get; set; }
public string title { get; set; }
public object flag { get; set; }
public int width { get; set; }
public int height { get; set; }
public int top { get; set; }
public int left { get; set; }
}
Note: This class was generated at http://json2csharp.com/ My jquery code is this:
function actualizarCondiciones(tcLink) {
$.getJSON(tcLink, function (condiciones) {
alert(condiciones); //It never reach.
$.each(condiciones, function (key, val) {
alert(val);
});
});
}
The problem is that callback function never reach.
Upvotes: 0
Views: 184
Reputation: 14967
In chat you included this code:
public ActionResult CondicionesMostrar(decimal NumIdTransaccion , decimal NumIdConcepto)
{
// Se verifica si la session de usuario ya tiene cargada una Id de Transaccion
VerificarTransaccion(NumIdTransaccion);
//Se seleccionan el item, este ya tiene relacionado el grupo y las condiciones del mismo
var item = from i in db.Merlin_ConceptosFacturacion
where i.NumIdConcepto == NumIdConcepto
select i ;
// Se verifica si ya se han agregado algunas condiciones
var condiciones = from c in db.Merlin_BR_Condiciones_x_Pedido
where c.NumIdTransaccion == NumIdTransaccion
select c;
ViewBag.condiciones = condiciones.ToList();
return View(item.First());
}
But you should return a json type, as this:
public JsonResult CondicionesMostrar(decimal NumIdTransaccion , decimal NumIdConcepto)
{
...
return Json(item.First());
}
To test this you can write the following code:
public JsonResult CondicionesMostrar(int numIdTransaccion, int numIdConcepto)
{
return Json(new {NumIdTransaccion = numIdTransaccion, NumIdConcepto = numIdConcepto});
}
And in javascript:
function actualizarCondiciones(tcLink) {
$.getJSON(tcLink, function (condiciones) {
console.log(condiciones); // depending on the browser you use, there might not "console.log"
$.each(condiciones, function (key, val) {
console.log(key, val);
});
}).fail(function() {
console.log('error', arguments);
});
}
UPDATE for request with GET method:
public JsonResult CondicionesMostrar(int numIdTransaccion, int numIdConcepto)
{
return Json(
new {NumIdTransaccion = numIdTransaccion, NumIdConcepto = numIdConcepto}
,JsonRequestBehavior.AllowGet
);
}
Upvotes: 1
Reputation: 26921
You are calling getJSON
incorrectly. The second parameter is data to pass to the server. You can't just omit it. If no data is expected, just pass null
or empty object {}
as second parameter:
$.getJSON(tcLink, null, function (condiciones) {
alert(condiciones); //It never reach.
$.each(condiciones, function (key, val) {
alert(val);
});
})
See $.getJSON
for details
Upvotes: 0