嗨我试图在我的cshtml中使用我的jquery(ajax)调用我的控件中的函数...
我的RegisterNewAcct.cshtml中的代码位于主文件夹
<div data-role="page" data-theme="a">
<div data-role="header" data-theme="a">
<a href="#CancelDialogPage" data-icon="arrow-l" data-rel="dialog" id="opencanceldialog">Cancel</a>
<h1>@ViewBag.Title</h1>
</div>
<h2>New Account</h2>
<div data-role="content" data-theme="a">
@using (Html.BeginForm())
{
@Html.ValidationSummary(true, "Registration Failed! Check your Registration Details.")
<div>
<fieldset>
<div>@Html.LabelFor(u => u.NewAcctName)</div>
<div>
@Html.TextBoxFor(u => u.NewAcctName)
@Html.ValidationMessageFor(u => u.NewAcctName)
</div>
<div>@Html.LabelFor(u => u.NewDispName)</div>
<div>
@Html.TextBoxFor(u => u.NewDispName)
@Html.ValidationMessageFor(u => u.NewDispName)
</div>
<div>@Html.LabelFor(u => u.NewEmail)</div>
<div>
@Html.TextBoxFor(u => u.NewEmail)
@Html.ValidationMessageFor(u => u.NewEmail)
</div>
<div>@Html.LabelFor(u => u.NewPassword)</div>
<div>
@Html.PasswordFor(u => u.NewPassword)
@Html.ValidationMessageFor(u => u.NewPassword)
</div>
<input type="submit" id="validatenewacct" value="Save" data-theme="b" /> <!-- THIS IS THE SUBMIT BUTTON AND WILL CALL MY JQUERY -->
</fieldset>
</div>
}
</div>
修改
我的Javascript低于我的cshtml
@section Scripts{
<script>
$(document).ready(function(){
$("#validatenewacct").click(function(e) {
$.ajax({
type: "POST",
data: $('form').serialize(),
url: "/Home/ValidateNewAccount",
contentType:"application/json; charset=utf-8",
success: function (result) {
alert("ok: "+ result);
},
error: function (result) {
alert('Oh no: '+ result);
}
});
});
});
});
</script>}
HomeController.cs背后的代码
[HttpPost]
public ActionResult ValidateNewAccount(Models.HomeModel user)
{
if (ModelState.IsValid)
{
return Json("True");
}
else
{
return Json("false");
}
return View(user);
}
Firebug错误
>'/'应用程序中的服务器错误。 无效的JSON原语:NewAcctName。 描述:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪,以获取有关错误及其在代码中的起源位置的更多信息。异常详细信息:System.ArgumentException:无效的JSON原语:NewAcctName。
来源错误:
在执行当前Web请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息。
答案 0 :(得分:0)
您不必将控制器添加到控制器名称。
而不是
url: "/HomeController/ValidateNewAccount"
应该是
url: "/Home/ValidateNewAccount"
在您的jQuery中,您展示了ValidateNewAccount
,但您在代码隐藏中显示的控制器是RegisterNewAccount
答案 1 :(得分:0)
我认为这是因为你还没有写一个document.ready函数。 试试这个:
$(document).ready(function() {
$("#validatenewacct").click(function(e) {
$.ajax({
type: "POST",
url: "/Home/ValidateNewAccount",
contentType:"application/json; charset=utf-8",
success: function (result) {
alert("ok: "+ result);
},
error: function (result) {
alert('Oh no: '+ result);
}
});
});
});
<强>编辑:强>
还有一件事你的Action ValidateNewAccount想要一个参数而你没有在$ .ajax中给它们任何参数。试试这个: $(document).ready(function(){
$("#validatenewacct").click(function(e) {
$.ajax({
type: "POST",
data: $('form').serialize(),
url: "/Home/ValidateNewAccount",
contentType:"application/json; charset=utf-8",
success: function (result) {
alert("ok: "+ result);
},
error: function (result) {
alert('Oh no: '+ result);
}
});
});
});