2010-05-31 45 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)。