2017-03-25 3 views
0

J'essaie de récupérer des données de la ville sur la sélection de l'ID de pays en utilisant ajax via le fichier js externe et également noter que mon code est en cours d'exécution localement. Question Quand j'utilise la fonction jquery interne, c'est-à-dire en vue MVC, je peux charger la liste déroulante de la ville sur la sélection du pays où la liste déroulante n'est pas chargée quand j'utilise la même chose avec un fichier JS séparé.Ajax appel à partir de fichier JS externe dans MVC 4

Ci-dessous est l'appel Ajax ..

$(document).ready(function() { 

     $("#Country").change(function() { 

      $.ajax({ 
       type: 'POST', 
       url: '@Url.Action("GetCities")', 
       data: { id: $("#Country").val() }, 
       success: function (data) { 
        $("#City").empty(); 
        $("#City").append('<option value=" ' + 0 + ' ">' + "---Select---" + '</option>') 
        $.each(data, function (i, City) { 
         $("#City").append('<option value="' + City.value + '">' + City.Text + '</option>') 
        }); 
       } 
      }); 
     }) 
    }); 
+0

S'il vous plaît aidez-moi .. –

+0

@ syntaxe Url.Action ne fonctionne que dans le fichier .cshtml, les scripts externes ont pour contenir les urls résolues, comme "/ NomContrôle/GetCities", et dans les cas déployés dans un sous-répertoire, "/ sbdirectory/ControllerName/GetCities". – shakib

Répondre

0

Essayez de déboguer le code et vérifier la bonne URL et toserver d'affichage des paramètres.

$("#Country").change(function() { 

debugger; 
    var dropdnSelectedVal = $(this).val(); 

    console.log(dropdnSelectedVal); 

     $.ajax({ 
      type: 'POST', 
       dataType: "json", 
      url: '@Url.Action("GetCities")',//here is the issue, Its can not be parsed in external js file 
      data: { id: $("#Country").val() }, 
      success: function (data) { 

      debugger; 
      var responseDataFromServer = data; 
      console.log(data); 
       $("#City").empty(); 
       $("#City").append('<option value=" ' + 0 + ' ">' + "---Select---" + '</option>') 
       $.each(data, function (i, City) { 
        $("#City").append('<option value="' + City.value + '">' + City.Text + '</option>') 
       }); 
      } 
     }); 
    }) 
}); 

OU, consultez l'affichage de données par navigateur param au sever sur le réseau Browser Tab

+0

modifier '@ Url.Action ("GetCities")' à "/ ControllerName/GetCities" –

+0

Merci Aditya..pour aider, Mais j'ai essayé le chemin comme "/ ControllerName/GetCities" encore ça ne fonctionne pas comme je l'ai exception de l'URL n'est pas trouvé ... Je vais essayer de déboguer comme vous avez suggéré mais s'il vous plaît laissez-moi savoir alternative pour le problème d'URL dans le fichier JS externe. –

+0

ControllerName n'est pas seulement le texte mais: Par exemple - Si votre nom de classe conrtoller est CountryController, alors vous devez utiliser l'URL comme: '/ Country/GetCities' –