2016-10-08 1 views
0

Je suis confus pourquoi mon appel Ajax ne fonctionne pas. Actuellement, j'ai juste besoin de ma méthode Ajax du client pour accéder à ma méthode de contrôleur. La commande d'alerte est POPING sur mon HTML Mais le côté serveur n'est pas accessible depuis le client. S'il vous plaît conseiller ce que je manque à suivre:Appels Ajax ne pas accéder au côté serveur

  1. Appel ma méthode d'action du contrôleur Obtenir les données

    <script> 
    $(document).ready(function() { 
         $.get("@Url.Action("GetData","Driver")",function(data){ 
         $("#dataForSecond").html(data); 
         alert("Second ActionResult"); 
        }); 
    }); 
    

  2. méthode Obtenir des données dans mon contrôleur retourne juste:

    public ActionResult GetData() 
    { 
        logger.AddLog("INTO 2nd Action Method"); 
        var secondData = "I m Dummy"; 
        //System.Threading.Thread.Sleep(500); 
        logger.AddLog("Setting loggedInAgent Value Again"); 
        // ViewBag.loggedInAgents = "11"; 
        return Json(secondData, JsonRequestBehavior.AllowGet); 
    } 
    
  3. Pour les tests j'ai fait suivre dans le côté client mais pas REFRE SHING a eu lieu, seulement un POP comme avant. Ce qui se passe avec mon code, je n'ai aucune idée.

    $(function() { 
        var refreshInterval = 5000; 
        var url="@Url.Action("GetData","Driver")"; 
        setInterval(function() { 
        $("#View1").load(url); 
        }, refreshInterval); 
    
+1

Où avez-vous définissez la valeur de la variable 'secondData'? Il n'est pas nécessaire de définir l'élément ViewBag dans votre méthode 'GetData'. Aussi vous appelez la méthode 'Show' et nous ne savons pas ce qu'il y a dedans! Vous n'êtes pas censé appeler la méthode 'GetData'? – Shyju

+0

Monsieur, Après l'édition @ J'ai le contrôle dans l'interface utilisateur/client pour Ajax. Mais le contrôle ne va pas à Controller Methods/Driver. J'ai implémenté LoGGING dans GetData() mais les logs ne sont jamais écrits pour cette méthode. –

+0

Avez-vous une erreur js dans votre page? – Shyju

Répondre

1

Vous appelez ActionResult, vous devez appeler JsonResult qui est pourquoi ne fonctionne pas, voir un exemple ci-dessous:

   $.ajax({ 
       url: '/Product/List', 
       type: "GET", 
       data: { "nrRecs": 4 }, 
       async: true, 
       dataType: "json", 
       error: function (XMLHttpRequest, textStatus, errorThrown) { 
         alert('error'); 
       }, 
       success: function (data) { 
        alert('ok'); 
       } 
      }); 


    [HttpGet] 
    public async Task<JsonResult> List(int nrRecs) 
    { 
     var product = db.products.Take(4); 
     return Json(await product.ToListAsync()); 
    }