2010-10-26 3 views
0

Je ne peux pas envoyer de données au contrôleur MVC en utilisant la bibliothèque de connexion YAHOO.Comment envoyer des données au contrôleur en utilisant YAHOO connect et json

La requête et le filtre de paramètres sont NULL. Où est le problème?

// --- JavaScript --- // 
    var callbacks = { 
     // Successful XHR response handler 
     success: function (o) { 
      var messages = []; 
      // Use the JSON Utility to parse the data returned from the server 
      try { 
       messages = YAHOO.lang.JSON.parse(o.responseText); 
      } 
      catch (x) { 
       alert("JSON Parse failed!"); 
       return; 
      } 
      handleSearchResult(messages, query, filter); 
     }, 
     argument: { query: "flowers", filter: "home" } 
    }; 

    // Make the call to the server for JSON data 
    YAHOO.util.Connect.asyncRequest("GET", "Search/GetTopics", callbacks); 

    // --- C# --- // 
    //Controller 
    [AcceptVerbs(HttpVerbs.Get)] 
    public JsonResult GetTopics(string query, string filter) 
    { 
     // query and filter are NULL <- problem here // 
     // ...do my stuff... // 
     return Json(Search(query, filter), JsonRequestBehavior.AllowGet); 
    } 

Merci! :)

Répondre

0

Vous avez des possibilités d'envoyer des paramètres:

  1. utiliser la méthode GET verbe: Dans ce cas, vous devez passer les paramètres du querystring:

    YAHOO.util.Connect.asyncRequest('GET', 
        'Search/GetTopics?query=foo&filter=bar', callbacks); 
    
  2. Utilisation verbe POST: dans ce cas, vous pouvez utiliser le paramètre postData

    YAHOO.util.Connect.asyncRequest('POST', 'Search/GetTopics', 
        callbacks, 'query=foo&filter=bar'); 
    

Dans le premier cas, il est effectivement recommandé d'utiliser les aides URL pour générer l'adresse pour faire des valeurs sûres sont correctement encodées URL:

var url = '<%= Url.Action("GetTopics", "Search", new { query = "foo", filter = "bar" }) %>'; 
YAHOO.util.Connect.asyncRequest('GET', url, callbacks); 

en est de même pour le second cas. Assurez-vous de coder correctement les valeurs.

Questions connexes