如何使用YAHOO connect和json将数据发送到控制器

时间:2010-10-26 08:45:50

标签: javascript c# ajax asp.net-mvc yahoo-api

我无法使用YAHOO连接库向MVC控制器发送数据。

参数query和filter为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);
    }

谢谢! :)

1 个答案:

答案 0 :(得分: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');
    
  3. 在第一种情况下,实际上建议使用Url帮助程序生成地址,以确保正确地对URL进行编码:

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

    第二种情况也是如此。确保正确编码值。