0

JSON リクエストを処理しようとしています。getJSON で使用される URL は

http://localhost:52563/Documentos/Docs/CondicionesMostrar?NumIdTransaccion=16091&NumIdConcepto=421. 

これを使用して私の部分ビューによって返されたテキスト:

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);
     });
 });
}

問題は、コールバック関数が到達しないことです。

4

2 に答える 2

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 メソッドを使用したリクエストの UPDATE:

public JsonResult CondicionesMostrar(int numIdTransaccion, int numIdConcepto) 
{ 
    return Json(
          new {NumIdTransaccion = numIdTransaccion, NumIdConcepto = numIdConcepto}
          ,JsonRequestBehavior.AllowGet
    ); 
}
于 2012-11-22T18:33:59.670 に答える
0

あなたはgetJSON間違って電話をかけています。2 番目のパラメーターは、サーバーに渡すデータです。それを省略することはできません。データが予期されない場合は、2 番目のパラメーターとしてnullオブジェクトを渡すか空にするだけです。{}

$.getJSON(tcLink, null, function (condiciones) {
     alert(condiciones); //It never reach.
     $.each(condiciones, function (key, val) {
         alert(val);
     });
 })

詳細$.getJSONはこちら

于 2012-11-22T16:19:04.783 に答える