Javascript 如何使用AJAX或Jquery从视图向控制器发送值?

Javascript 如何使用AJAX或Jquery从视图向控制器发送值?,javascript,jquery,ajax,asp.net-mvc,Javascript,Jquery,Ajax,Asp.net Mvc,我的代码: 视图: $(“#btn”)。在(“单击”,函数(){ //它是$(“#uname”)。在(“blur”,函数(){编辑之前 var choiceId=$('#uname').val(); var JSobj={ 联埃特派团:精选 }; log(JSobj.uname+“Null”); $.ajax({ url:“/Home/CheckUserName”, contentType:'应用程序/json', 数据:JSON.stringify(JSobj), 类型:“post”, cac

我的代码: 视图:

$(“#btn”)。在(“单击”,函数(){
//它是$(“#uname”)。在(“blur”,函数(){编辑之前
var choiceId=$('#uname').val();
var JSobj={
联埃特派团:精选
};
log(JSobj.uname+“Null”);
$.ajax({
url:“/Home/CheckUserName”,
contentType:'应用程序/json',
数据:JSON.stringify(JSobj),
类型:“post”,
cache:false,
成功:功能(响应){
var str=JSON.stringify(响应);
console.log(str);
如果(str==“true”){
$(“#usermsg”).val(“你可以走了”);
$(“#usermsg”).attr(“颜色”、“绿色”);
}
其他的
警报(“故障”);
},
错误:函数(响应){
警告(“你应该放弃编码”);
}
});
})

@使用(Html.BeginForm(“注册”、“主页”))
{
@DisplayNameFor(Model=>Model.UserName);
@TextBoxFor(Model=>Model.UserName,新的{@id=“uname”});
@Html.ValidationMessageFor(Model=>Model.UserName,“,new{@class=“text danger”,@id=“usermsg”})
@DisplayNameFor(Model=>Model.UserPassword); @Html.TextBoxFor(Model=>Model.UserPassword); @Html.ValidationMessageFor(model=>model.UserPassword,“,new{@class=“text danger”})
@DisplayNameFor(Model=>Model.UserData.Fname); @TextBoxFor(Model=>Model.UserData.Fname); }
和我的控制器:

/[HttpPost]
public JsonResult CheckUserName(字符串uname)
{
布尔旗;
字符串名称=uname;
使用(var-context=new-loginenties1())
{
LoginDetail detail=新LoginDetail();
尝试
{
//var data=context.LoginDetails.ToList(),其中(m=>m.UserName==uname);
flag=false;
}
捕获(例外e)
{
flag=true;
}
}
返回Json(标志);
}
我尝试了各种排列和组合,以将
#uname
的值发送到控制器,但在控制器中结果为空。 控制台会打印出
#uname
的值,但不会传递给控制器。有人能帮我吗

编辑:

我发现了一个奇怪的行为。我在提交按钮上添加了一个点击事件,以代替点击模糊。即使我没有点击按钮,控制器仍会在点击模糊事件上被调用。

您可以尝试一下

 $("#btn").on("click", function () {
        $.ajax({
            url: '/Home/CheckUserName?uname='+$('#uname').val(),                  
            type: "post",
            cache: false,
            success: function (response) {
            var str = response;
            console.log(str);
            if (str == "true") {
                $("#usermsg").val("You are good to go");
                $("#usermsg").attr("color", "green");
            }
            else
                alert("Failure");
        },
        error: function (response) {
            alert("You should give up coding");
        }
    });
})

您在浏览器控制台中遇到了什么错误?(请注意,您不需要
contentType:'application/json',
选项-它可以是
data:JSobj,
),在任何情况下,您都应该使用
[Remote]
attribute for this-@StephenMuecke我只想学习AJAX,这就是我这么做的原因。控制台上没有错误。它只是按预期打印用户名(输入)+Null。谢谢。控制台的外观如何。log?当我输入“John”作为用户名时,它会显示“John Null”在控制器中,不管它怎么说,uname变量的Null指针异常。@Se0ng11