2015-08-28 50 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); 
    }