2010-05-31 47 views
0

控制器:asp.net的MVC,让AJAX调用JSON

public ActionResult EditOrganizationMeta(int id) 
    { 

    } 


     [HttpPost] 
    [ValidateInput(false)] 
    public ActionResult EditOrganizationMeta(FormCollection collection) 
    { 

    } 

查看:

function DoAjaxCall() { 
     var url = '<%= Url.Action("EditOrganizationMeta", "Organization") %>'; 
     //url = url + '/' + dd; 

     $.post(url, null, function(data) { 
      alert(data); 


     }); 
    } 

    <input type="button" name="something" value="Save" onclick="DoAjaxCall()" /> 

如何将我让Ajax调用,我已经基本具有相同的名称EditOrganizationMeta两种功能,做表单集合将自动传递。基本混淆关于方法调用

好吧,我用ajax打了一个电话,但之后我的这段代码不再运行了

[HttpPost] 
    [ValidateInput(false)] 
    public ActionResult EditOrganizationMeta(FormCollection collection) 
    { 
     int OrganizationId = 11; 
     string OrganizationName = "Ministry of Interior"; 

     try 
     {  
      string ids = Request.Params // **getting error here some sequence is not there** 
      .Cast<string>() 
      .Where(p => p.StartsWith("button")) 
      .Select(p => p.Substring("button".Length)) 
      .First(); 

      String RealValueOfThatControl = collection[ids]; 


      } 

     } 
     catch { } 


     return RedirectToAction("EditOrganizationMeta", new { id = OrganizationId }); 

    } 

我认为没有交

+0

你不能通过AJAX调用重定向(至少不是这种方式)。在您当前的代码中,您将向浏览器发送3xx响应代码,该代码将被忽略。你应该做的是用你在成功处理程序中用来更新页面的数据或标记进行响应。另一方面,如果你想重定向,那么做AJAX调用有什么意义呢? – tpeczek 2010-05-31 12:46:53

+0

好吧,那么返回什么我将返回json? – maztt 2010-05-31 12:59:10

+0

如果你想返回JSON,那么准备一个数据对象并用JsonResult返回它(你可以使用控制器的Json()方法) – tpeczek 2010-05-31 19:57:39

回答

2

你必须通过的。员额$调用第二个参数来传递你想要的数据。最简单的方法(如果你想将一个表单POST)是使用$ .serialize这样的:

$.post(url, $('#formId').serialize(), function(data) { 
    alert(data); 
}); 

其中“formId”是你形成的标识符。不要担心有两个名称相同的方法,它们将被HttpVerb区分(其中一个只响应GET,而另一个响应POST)。