2010-10-26 39 views
0

我無法使用YAHOO連接庫將數據發送到MVC控制器。如何使用YAHOO連接和json將數據發送到控制器

參數查詢和過濾器是NULL。哪裏有問題?

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

謝謝! :)

回答

0

你必須準備發送參數:

  1. 使用GET動詞:在這種情況下,你需要傳遞的查詢字符串參數:

    YAHOO.util.Connect.asyncRequest('GET', 
        'Search/GetTopics?query=foo&filter=bar', callbacks); 
    
  2. 使用POST動詞:在這種情況下,您可以使用postData參數

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

在第一種情況下,它實際上是建議使用網址助手生成地址,以確保值正確URL編碼:

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

這同樣適用於第二種情況屬實。確保正確編碼值。

相關問題