2017-03-25 45 views
0

我想通過外部js文件使用ajax選擇國家/地區id的城市數據,同時請注意我的代碼在本地運行。 問題是當我使用內部jquery函數,即在MVC視圖中,我能夠正確加載城市下拉選擇的國家,因爲城市下拉沒有得到加載,當我嘗試使用單獨的JS文件相同。來自MVC外部JS文件的Ajax調用4

下面是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

請幫助我.. –

+0

@ Url.Action語法僅在.cshtml文件時,外部腳本有包含已解析的網址,例如「/ ControllerName/GetCities」,以及部署到子目錄「/ sbdirectory/ControllerName/GetCities」的情況。 – shakib

回答

0

嘗試調試代碼,並檢查是否有正確的URL和參數發佈toserver。

$("#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>') 
       }); 
      } 
     }); 
    }) 
}); 

OR, 只需通過瀏覽器檢查帕拉姆數據發佈​​到服務器上的網絡瀏覽器選項卡

+0

更改'@ Url.Action(「GetCities」)'爲「/ ControllerName/GetCities」 –

+0

謝謝Aditya..for幫助,但我試過的方式作爲「/ ControllerName/GetCities」仍然不起作用,因爲我得到未找到URL的例外...我會嘗試按照您的建議進行調試,但請讓我知道在外部JS文件中用於URL問題的替代方法。 –

+0

ControllerName不只是文本,而是:例如 - 如果您的控制器類名是CountryController,那麼您應該使用以下URL: '/ Country/GetCities' –