2015-08-28 128 views
-1

後不叫我有一個jQuery的AJAX腳本像下面:成功()函數的AJAX GET請求

 function FillCity() { 
     var stateID = $("#ddlState").val(); 

     $.ajax({ 
      url: '@Url.Action("Employee", "Index")', 
      type: "GET", 
      dataType: "json", 
      data: { state: stateID }, 
      async: true, 
      processData: true, 
      success: function (data) { 
       alert("SSSS"); 
      }, 
      error: function (data) { 
       alert("error"); 
      } 
     }); 
    } 

我打過電話給控制器的操作方法。數據正在發送到控制器的操作方法,我也正在接收來自控制器的數據。

但不幸的是,它調用了錯誤函數而不是成功。

請查看下面的控制器方法。

public ActionResult FillCity(int state) 
    { 
     var cities = subbuObject.Cities.Where(c=>c.StateID == state); 
     return Json(cities, JsonRequestBehavior.AllowGet); 
    } 
+1

什麼錯誤?使用您的瀏覽器工具(網絡選項卡)確定原因 –

+1

'Action'名稱爲'FillCity'..但在'ajax'調用..'URL'看起來不同 – Pawan

+0

您的動作名稱和url動作名稱必須相同。像:@ @ Url.Action(「Employee」,「FillCity」)' – Sender

回答

1

這裏有一些事情要做:

  1. 使用@Url.Action("FillCity", "Employee")。您通過混淆參數來做錯了。首先是控制器的方法名稱,第二個參數是控制器的名稱。
  2. 在您的Ajax調用中,dataType告訴jQuery期待什麼樣的響應。 期待JSON或XML或HTML等...... jQuery默認嘗試並找出它。
  3. 您不必使用

    async: true, // set to true by default  
    processData: true, // set to true by default 
    

控制器:

public class EmployeeController: Controller 
{ 
     [HttpGet] 
     public ActionResult FillCity(int state) 
     { 
      var cities = subbuObject.Cities.Where(c=>c.StateID == state); 
      return Json(cities , "application/json", JsonRequestBehavior.AllowGet); 
     } 
} 

腳本:

<script> 
     function fillCity() { 
      var stateID = $("#ddlState").val(); 

      $.ajax({ 
       url: '@Url.Action("FillCity", "Employee")', 
      type: "GET", 
      dataType: "json", 
      data: { state: stateID }, 
      success: function (data) { 
       alert("SSSS"); 
      }, 
      error: function (data) { 
       alert("error"); 
      } 
     }); 
    } 
    </script> 
+0

感謝您的幫助,仍然沒有開啓成功功能。 – Subbu

+0

@Subbu我會爲你添加樣品。 –

+0

非常感謝。我是mvc的新手,真的無法理解那裏出了什麼問題。請幫幫我。 – Subbu

0

你必須爲你的ajax呼叫控制器action錯誤url路徑。它應該是:

$.ajax({ 
    url: '@Url.Action("YourActionNamne", "YourControllerName")', 
    type: "GET", 
    dataType: "json", 
    data: { state: stateID }, 
    async: true, 
    processData: true, 
    success: function (data) { 
     alert("SSSS"); 
    }, 
    error: function (data) { 
     alert("error"); 
    } 
}); 

在你的情況url將是:

url: '@Url.Action("FillCity", "Employee")' 

如果你在你的應用程序中有Areas然後url將是:

url: '@Url.Action("ActionName", "ControllerName", new { Area = "AreaName" })', 
+0

如果我從成功的函數中刪除數據變量,警告框開火。如果我將數據變量放在成功函數中,警告框不會觸發,並且控制轉到錯誤並且首先出現錯誤警報框。 – Subbu

0

嘗試下面的代碼。

腳本:

<script type="text/javascript"> 
    function fillCity() { 
     var stateID = $("#ddlState").val(); 

      $.ajax({ 
      url: '@Url.Action("FillCity", "Employee")', 
      type: "GET", 
      dataType: "json", 
      data: { state: stateID }, 
      success: function (data) { 
       alert("SSSS"); 
      }, 
      error: function (data) { 
       alert("error"); 
      } 
     }); 
    } 
</script> 

控制器:

public ActionResult FillCity(int state) 
    { 
     var cities = subbuObject.Cities.Where(c=>c.StateID == state); 
     return Json(cities, JsonRequestBehavior.AllowGet); 
    }