我无法使用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);
}
谢谢! :)
答案 0 :(得分:0)
您必须发送参数:
使用GET动词:在这种情况下,您需要传递查询字符串中的参数:
YAHOO.util.Connect.asyncRequest('GET',
'Search/GetTopics?query=foo&filter=bar', callbacks);
使用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);
第二种情况也是如此。确保正确编码值。