无法使用Ajax调用控制器操作方法

时间:2014-05-02 09:57:22

标签: ajax asp.net-mvc-4 controller action

我在MVC4工作。     我有一个名为“Beauty”的控制器。它有两种动作方法,即“Actio1”和“Action2”。     我的视图名称是Action1。     现在在我看来我有两个div。点击第一个div,通过AJAX我在我的控制器中调用“Action1”方法。这工作正常,即我能够点击动作方法“Action1”。     当我点击第二个div并尝试通过AJAX调用第二个动作方法“Action2”时,我根本无法点击Action2方法。

控制器

public class BeautyController : Controller 
{ 
   [HttpPost] public JsonResult Action1(string option1) 
   { 
      return Json("true"); 
   }     

   [HttpPost] public JsonResult Action2(string option2)
   {
      return Json("true"); 
   }
}

的Ajax

function Question1(Answers) {
   var url = '@Url.Action("Action1", "Beauty")'; 
   var Data = Answers;

   if (url != null && url != undefined && Data != null && Data != undefined) {
      $.ajax({ url: url,
               dataType: "json",
               type: "POST", 
               data: { 'option': Answers },
               contentType: 'application/json; charset=utf-8', 
               success: function (result) {
                  if (result != null && result != undefined && result == "true")
                  { 
                     alert("Successfully Inserted!"); 
                  }
               },
               error: function (result) {
                  alert("error"); 
               } 
       });
   }
}

您能否帮我确定问题并解决问题。

谢谢, 普里亚。

1 个答案:

答案 0 :(得分:0)

您已将网址硬编码为action1

 var url = '@Url.Action("Action1", "Beauty")'; 

如果您想要调用Action2,则需要将其更改为:

 var url = '@Url.Action("Action2", "Beauty")'; 

然而,那只会调用行动2。

我建议你考虑在有问题的div上使用数据属性。

这样的事情:

 <div id="div1" data-url="@Url.Action("Action1", "Beauty")">
     //Div content here
 </div>

 <div id="div2" data-url="@Url.Action("Action2", "Beauty")">
     //Div content here
 </div>

然后,无论你在哪里调用函数,我都在猜一个点击事件。你会有这样的jQuery:

 var url = $(this).data("url");

然后你将把它传递给你的问题函数,这样就会变成这样的东西:

 function Question1(Answers, url) {
   var Data = Answers;
   if (url != null && url != undefined && Data != null && Data != undefined) {
   $.ajax({ url: url,
           dataType: "json",
           type: "POST", 
           data: { 'option': Answers },
           contentType: 'application/json; charset=utf-8', 
           success: function (result) {
              if (result != null && result != undefined && result == "true")
              { 
                 alert("Successfully Inserted!"); 
              }
           },
           error: function (result) {
              alert("error"); 
           } 
       });
       }
     }

很明显,这个答案是基于您在上面提供的信息和一些假设。