2016-09-15 2 views
-3

Ich bin eine Art neu zu Ajax.Wie AJAX-Anfrage verwenden, um Daten vom Controller in asp.net zu erhalten mvc

Ich versuche, Daten von meiner Methode in meinem Controller zu bekommen, ich habe den Ajax - Code geschrieben, aber scheint nicht den Job zu tun (nicht ziehen Daten vom Controller) vielleicht fehlt mir etwas in der Steuerung der Ajax-Anfrage.

ich habe zwei dropdowns, ich versuche, eine Dropdown-Box basierend auf der Auswahl eines anderen Dropdown zu füllen, ich versuche, Daten von einer Methode in meinem Controller zu korrigieren, die ich nicht weiß, wie.

würde ich wirklich einige Hinweise schätzen oder zu diesem Thema helfen

danke

public ActionResult ptdrFilter(int id) 
    { 
     //IUnitOfWork uow = DataAccess.GetUnitOfWork(); 
     using (ManageProductTemplate ptLogic = new ManageProductTemplate(ref uow)) 
     { 
      List<ProductTemplate> currentpt = ptLogic.GetBy(x => x.ProductTemplateID == id); 

      List<string> pt = new List<string>(); 
      foreach (var item in currentpt) 
      { 
       pt.Add(item.DistributionRule.Name); 

      } 
      return Json(new { 

       pt 


      } , JsonRequestBehavior.AllowGet); 
     } 
    } 

function drFilter() { 

    $.ajax({ 
     type: "json", 
     data: {id: 1}, 
     url:"/ptdrFilter/", 
success: function(result) { 
    drFilter(result); 
} 
    }); 
     var dataInJSONForm = JSON.stringify(sampleData); 
     var datainJSObjectForm = JSON.parse(dataInJSONForm); 

     $('#dd1').on('change', function (e) { 
      var valueChosenInddl2 = $(this).val(); 
      var options = datainJSObjectForm[valueChosenInddl2]; 



      var $subselect = $('#subselect'); 
      $subselect.children().detach(); 
      for (var property in options) { 
       $subselect.append($('<option>', { value: property, text: options[property] })); 

}

+0

Spezifischer mit dem Problem sein ... Was willst du erreichen, was passiert? Das Ergebnis enthält ein Objekt namens 'pt'. –

+0

Ich habe die Frage bearbeitet. und ja es wird als pt enthält eine Liste von Daten – user5813072

+0

"scheint nicht den Job zu tun". Was _exactly_ ist das Problem? Wo versagt es? – ADyson

Antwort

0

Es gibt ein paar klare Probleme hier:

1)

function drFilter() { 

    $.ajax({ 
    type: "json", 
    data: {id: 1}, 
    url:"/ptdrFilter/", 
    success: function(result) { 
    drFilter(result); 
    } 
}); 
... 

wird eine Endlosschleife erzeugen. Wenn der Ajax-Aufruf (erfolgreich) abgeschlossen ist, ruft er drFilter() erneut auf, wodurch der Ajax-Aufruf sofort erneut ausgeführt wird, und so weiter für immer.

2) Ich denke, es scheitert, weil die URL falsch ist. In den Kommentaren erwähnen Sie einen 404 Not Found Fehler - das bedeutet, dass es die falsche URL erreicht hat. MVC verwendet URL-Routing. Daher empfiehlt es sich, MVC URLs für Sie generieren zu lassen. Sie können dies tun, um eine HTML-Helfer verwendet wird, wie folgt aus:

url: @Url.Action("ptdrFilter") 

Ihr Browser auch berichtet, die die „sample“ Variable nicht definiert wurde. In Ihrem geposteten Code wird nirgends angezeigt, dass diese Variable definiert oder aufgefüllt ist, bevor Sie versuchen, sie an die JSON.stringify() -Methode zu übergeben. Ich schätze, das ist vielleicht Testcode, den Sie noch nicht entfernt haben.

+0

danke ich werde versuchen und stattdessen diese Methode verwenden. Es ist ein Testcode Ich habe eine Variable erstellt: // var sampleData = {Default: {Wert1: "Text", Wert2: "Text"}, PTDR: {Wert1: "Kal", Wert2: "Kal"}, Alle : {Wert1: "lool", Wert2: "loool"}}; um herauszufinden, ob es die zweite Dropdown-Liste basierend auf der Auswahl der ersten Dropdown-Liste gefüllt hat. Da ich nicht benutze die Probe-Variable, wie wird die zweite Dropdown-Liste generische füllt sich. Sorry über die Menge der Frage, die Ajax neu ist und es immer noch lernt – user5813072

+0

Ich kann nicht wirklich darüber antworten, wie spezifisch es das andere dropdown bevölkern wird - Sie haben nicht genügend Code erklärt oder gezeigt, um eine ausführliche Antwort darauf zu geben.Sie haben nach dem Ajax-Problem gefragt, das ich hoffentlich gelöst habe. Ich habe auch auf ein anderes offensichtliches Problem hingewiesen, weil ich es sehen konnte. Wenn die Antwort Ihnen hilft, das Ajax-Problem zu lösen, markieren Sie bitte als akzeptiert. Wenn Sie eine zweite Frage haben, erstellen Sie bitte eine neue Frage zu SO :-) – ADyson

Verwandte Themen