0

我无法使用 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);
    }

谢谢!:)

4

1 回答 1

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 助手来生成地址,以确保值是正确的 url 编码:

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

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

于 2010-10-26T15:42:02.783 回答