Как отправить данные на контроллер с помощью YAHOO connect и json - PullRequest
0 голосов
/ 26 октября 2010

Я не могу отправить данные на контроллер MVC с помощью библиотеки подключений YAHOO.

Параметры запроса и фильтра имеют значение 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 голосов
/ 26 октября 2010

У вас есть возможность отправить параметры:

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

То же самое верно для второго случая.Убедитесь, что вы правильно закодировали значения.

...