Jquery 自动完成和$.getJSON问题

Jquery 自动完成和$.getJSON问题,jquery,asp.net-mvc-2,getjson,Jquery,Asp.net Mvc 2,Getjson,我有一个剧本: <script type="text/javascript"> $(document).ready(function(){ $("#PrincipleMember_IdNumber").autocomplete({ close: function(event, ui) { var member = {}; member.IDNumber = $("#PrincipleMember_IdNumber

我有一个剧本:

<script type="text/javascript">
$(document).ready(function(){
    $("#PrincipleMember_IdNumber").autocomplete({
        close: function(event, ui) {
            var member = {};
            member.IDNumber = $("#PrincipleMember_IdNumber").val();
            $.getJSON("<%= Url.Action("MemberLookup","Member") %>", member, function(data) {
                $("#PrincipleMember_Firstname").val(data.FirstName);
            });
        }
    });
});
我的json结果执行得很完美,我得到了一个结果,但由于某种原因,脚本的这一部分没有执行:
$(“#PrincipleMember_Firstname”).val(data.Firstname)

我试着用
alert()替换它,但这也没有执行

有人知道我做错了什么吗?

我最好的猜测是(假设您的服务器端方法确实执行成功,并返回
200 OK
)您的数据对象可能没有FirstName属性

如果使用Firefox,则获取FireBug,并检查数据对象的值。如果您使用的是Chrome-请检查开发人员控制台(Ctrl+Shift+I)

替换
$(“#PrincipleMember_Firstname”).val(data.Firstname)带有
console.log(数据)
并检查javascript控制台(firebug的控制台选项卡,或Chrome的开发者控制台->控制台选项卡。您应该能够看到您的对象以及可能出现的任何js错误

如果对象返回fine,请尝试
console.log(data.FirstName);

如果对象不在控制台中,则您的success方法不会执行。可能服务器端调用不成功,请尝试将其替换为
$.ajax
调用,并使用错误事件查看问题所在


另外,如果console.log返回undefined,则您的方法调用结果可能没有返回有效的json对象,尽管我认为这不太可能,但请查看您的代码。

我必须更改json结果:

return this.Json(member, JsonRequestBehavior.AllowGet);

你有没有检查JS控制台是否有错误?你有没有尝试firebug?它会告诉你JS中是否有错误,或者在执行JS get时是否有错误。你也可以检查ajax调用的响应。firebug告诉我:此请求已被阻止,因为敏感信息可能会泄露给第三方web si在GET请求中使用此选项时,将JsonRequestBehavior设置为AllowGet.argh。若要允许GET请求,请将JsonRequestBehavior设置为AllowGet.argh。我的jsonresult应如下所示:
返回此.Json(m,JsonRequestBehavior.AllowGet);
啊,好了..自己回答了问题:)FireBug在这些情况下是必须的:D
public JsonResult MemberLookup(Member member)
{
    member = _memberRepository.GetMember(member.IDNumber);
    return this.Json(member);
}
return this.Json(member, JsonRequestBehavior.AllowGet);