他の同様の質問を読んでみましたが、私の問題の何かが間違っているかどうかはわかりません。ASP.NET Ajaxがnullを返す
今すぐテキストが正しく取得され$("#txtSearch").keyup(function() {
var x = $("#txtSearch").val();
、したがって、「x」は値を持っている:から取得したテキストを送信することになっています
$.ajax({
type: "POST",
url: '@Url.Action("Search", "Map")', // Map Controller, Search Action
data: JSON.stringify({ "Location": x }),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
var table = "<table class='table'>";
$.each(data, function (index, value) { // For each element in data:
table += "<tr><td>" + value.title + "</td></tr>"; // add it to the table list
var latlng = new google.maps.LatLng(value.latitude, value.longitude);
var marker = new google.maps.Marker({
position: latlng,
map: map
});
gmarkers.push(marker);
});
table += "</table>";
$("#myData").html(table);
}
});
:私は次のようにAJAX呼び出しを構築しようとしていますそれが提出されたとき。タイトルは、私は本当にそれで何かを行うことはできませんnullのまま限り
[HttpPost]
public ActionResult Search (string title)
{
Entities mapEntity = new Entities();
string userId = User.Identity.GetUserId();
var result = mapEntity.Markers.Where(x => x.title.StartsWith(title) && x.UserId == userId).ToList();
return Json(result, JsonRequestBehavior.AllowGet);
}
:上記のAJAXリクエストが処理されるとしかし、このメソッドはnullパラメータで呼び出されMapController下の検索アクションがあると呼ばれています...この問題を解決するための助けを感謝します。あなたのAJAXリクエストのそれらの2つのパラメータを置き換える
あなたのお勧めは完璧に機能しました!しかし今、行動への復帰はうまくいっていますが、データが正しく返されていません。 500(内部サーバーエラー)と表示されます。私は、そのJsonタイプのデータを返し、その$。各データ(データ、関数(インデックス、値){})で実行しています。それがどうしていいのか? – Ben
http://i.imgur.com/ylM9XcO.pngデバッガ – Ben
で返されるデータを表示するには、ビューモデルを使用している場合、一部のドメインエンティティをビューに戻すことができます。ドメインエンティティには循環参照が含まれている可能性がありますが、明らかにJSONをシリアル化することはできません。だからあなたは500内部サーバーエラーを取得しています。このエラーを解決するには、ドメインエンティティをビューに渡して結果をビューモデルに投影しないようにします。 –