繁体   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