0

jquery からコントローラーに json オブジェクトを送信すると、データがメソッドに渡されますが、何らかの理由で null です。また、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

アクション メソッドのパラメーターと MyQuery プロパティの 1 つとの間に競合があります。どちらも「query」という名前です。それらのいずれかの名前を変更すると、コードが機能します。

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