2010-05-31 7 views
0

Controller:asp.net mvc ajax prise appel JSON

public ActionResult EditOrganizationMeta(int id) 
    { 

    } 


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

    } 

Vue:

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()" /> 

comment pourrais-je faire appel ajax, j'ai essentiellement deux fonctions avec le même nom EditOrganizationMeta, Est-ce que le la collection de formulaire sera passée automatiquement.La confusion de base est en ce qui concerne l'appel de méthode

Ok j'ai fait un appel par ajax mais après que Mon Ce code ne fonctionne plus

[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 }); 

    } 

Je pense qu'il n'y a pas d'article

+0

Vous ne pouvez pas effectuer de redirection avec un appel AJAX (du moins pas de cette façon). Dans votre code actuel, vous enverrez un code de réponse 3xx au navigateur, qui sera ignoré. Ce que vous devez faire est de répondre avec des données ou un balisage que vous utilisez dans votre gestionnaire de succès pour mettre à jour la page. D'autre part, quel est le point de faire appel AJAX si vous voulez rediriger? – tpeczek

+0

ok donc quoi retourner Je reviendrai json? – maztt

+0

Si vous souhaitez renvoyer JSON, préparez un objet de données et renvoyez-le avec JsonResult (vous pouvez utiliser la méthode Json() du contrôleur) – tpeczek

Répondre

2

Vous devez transmettre les données que vous voulez par second paramètre d'appel .post $. La meilleure façon (si vous voulez poster un formulaire) est d'utiliser .serialize $ comme ceci:

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

Où formId 'est vous remplissez le formulaire identifiant. Et ne vous inquiétez pas d'avoir deux méthodes avec le même nom, elles seront distinguées par HttpVerb (l'une répondra seulement à GET, tandis que l'autre sera POST).