嘗試閱讀其他類似的問題,但無法完全檢測到我的問題。我試圖如下建立一個Ajax調用:返回null的ASP.NET Ajax
$.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);
}
});
它應該發送從獲取的文字:
$("#txtSearch").keyup(function() {
var x = $("#txtSearch").val();
現在文本是正確地獲取,因此「X」確實有一個值當它提交。但是,一旦上述Ajax請求被處理被調用的方法,它是MapController下的搜索行動被稱爲帶有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);
}
只要標題保持爲空我真的不能對它做任何事...感謝解決此問題的任何幫助。
您的建議非常完美!但是現在返回到行動正在工作,但它沒有正確返回數據。它說500(內部服務器錯誤)。我返回的是Json類型的數據,並通過$ .each(data,function(index,value){})運行它。任何想法爲什麼會這樣? – Ben
http://i.imgur.com/ylM9XcO.png要顯示通過調試器返回的數據 – Ben
我可以看到,如果使用視圖模型,則返回一些域實體到視圖。域實體可能包含顯然不能被JSON序列化的循環引用。這就是爲什麼你得到500內部服務器錯誤。要解決此錯誤,請停止將域實體傳遞給視圖並將結果投影到視圖模型。 –