0

当从 jquery 向我的控制器发送一个 json 对象时,数据被传递到该方法中,但由于某种原因为空。此外,我似乎无法在没有得到 404 的情况下发布数据,我被迫使用 get 方法。

我的 Javascript 和 jquery 调用如下所示:

var searchQuery = {

    'scope': 'global',
    'query': s
};
console.log(searchQuery);
$.ajax({
    type: "GET",
    url: "Search/SearchSite",
    contentType: "application/json; charset=utf-8",
    data: searchQuery,
    dataType: "json",
    success: function (msg) {
        $("#pageContent").html(msg);
    }
});

我的控制器如下所示:

[System.Web.Mvc.HttpGet]
public virtual ActionResult SearchSite(MyQuery query)
{
    string sendBack = "info to send:" + query.query;
    return Content(sendBack);
}

我的课看起来像这样:

public class MyQuery
{
    /// <summary>
    /// Defines the scope of the search Global etc.
    /// </summary>
    public string scope { get; set; }
    /// <summary>
    /// Defines the search query
    /// </summary>
    public string query { get; set; }
}

我已经尝试了一切简化,只是发送一个字符串,但由于某种原因也被取消了。

4

1 回答 1

0

Action Method 中的参数与 MyQuery 属性之一之间存在冲突:它们都被命名为“query”。如果您重命名其中之一,您的代码将起作用。

public virtual ActionResult SearchSite(MyQuery myQuery)
{
     string sendBack = "info to send: " + myQuery.query;
     return Content(sendBack); 
}
于 2012-09-13T23:30:08.400 回答