簡體   English   中英

ASP.NET Ajax返回null

[英]ASP.NET Ajax returning null

試圖閱讀其他類似的問題,但無法完全發現我的問題所在。 我試圖建立一個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請求得到處理,就會使用null參數調用正在調用的方法,即MapController下的Search Action:

[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);
}

只要標題保持為空,我就真的不能做任何事情...感謝您解決此問題的任何幫助。

您在搜索方法中尋找的不是“ title”的“ Location”參數。

數據:JSON.stringify({“ Location”:x})

請將參數名稱從“標題”更改為“位置”,然后檢查。

嘗試替換您的AJAX請求的這兩個參數:

data: JSON.stringify({ "Location": x }),
contentType: "application/json; charset=utf-8",

用這個簡單的表達式:

data: { title: x },

請注意,您的操作參數稱為title ,這就是您應該發送的參數。


更新:

要解決您遇到的500 Internal Server錯誤,請停止將域實體傳遞給視圖,因為它們可能包含無法進行JSON序列化的循環引用。 與往常一樣, 使用視圖模型來投影您的域實體,並僅包含視圖的相關信息:

var viewModel = result
    .Select(x => new 
    { 
        Prop1 = x.SimpleProp1, 
        Prop2 = x.SimpleProp2,
        Prop3 = x.NestedProp.Prop3,
    })
    .ToList();

return Json(viewModel, JsonRequestBehavior.AllowGet);

順便說一句,如果您在瀏覽器的“網絡”選項卡中檢查了AJAX請求,則將看到服務器的響應是YSOD,其中記錄了錯誤的確切原因。

進行檢查,以便您下次知道如何調試此類問題(我已突出顯示了您應該關注的重要部分):

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM