我正在尝试处理jSON请求,getJSON中使用的url是
http://localhost:52563/Documentos/Docs/CondicionesMostrar?NumIdTransaccion=16091&NumIdConcepto=421.
我的partialview使用此文件返回的文本:
string ljListaItems = Json.Encode(loListaItems).ToString();
@ljListaItems
它返回此数据
[{"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}]
这是这个类的代表:
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; }
}
注意:此课程是在http://json2csharp.com/生成的 我的jquery代码是这样的:
function actualizarCondiciones(tcLink) {
$.getJSON(tcLink, function (condiciones) {
alert(condiciones); //It never reach.
$.each(condiciones, function (key, val) {
alert(val);
});
});
}
问题是回调函数永远不会到达。
答案 0 :(得分:1)
在聊天中,您添加了以下代码:
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());
}
但你应该返回一个json类型,如下所示:
public JsonResult CondicionesMostrar(decimal NumIdTransaccion , decimal NumIdConcepto)
{
...
return Json(item.First());
}
要测试此功能,您可以编写以下代码:
public JsonResult CondicionesMostrar(int numIdTransaccion, int numIdConcepto)
{
return Json(new {NumIdTransaccion = numIdTransaccion, NumIdConcepto = numIdConcepto});
}
在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);
});
}
使用GET方法更新请求:
public JsonResult CondicionesMostrar(int numIdTransaccion, int numIdConcepto)
{
return Json(
new {NumIdTransaccion = numIdTransaccion, NumIdConcepto = numIdConcepto}
,JsonRequestBehavior.AllowGet
);
}
答案 1 :(得分:0)
您正在正确呼叫getJSON
。第二个参数是要传递给服务器的数据。你不能省略它。如果不需要数据,只需将null
或空对象{}
作为第二个参数传递:
$.getJSON(tcLink, null, function (condiciones) {
alert(condiciones); //It never reach.
$.each(condiciones, function (key, val) {
alert(val);
});
})
有关详细信息,请参阅$.getJSON