jquery - 将对象从 JSONResult 传递给 jQuery 中的其他函数
问题描述
如何将我的 Jsonresult 的对象(或我的对象的 id)传递给 jQuery 中的另一个函数?当我的 Actionresults 返回视图或其他操作时,我一切正常,但现在我必须更改所有内容以使其在模式中工作,我无法通过第一步。
我的 jQuery:
$(document).ready(function () {
var registerEmailBtn = $("#registerEmailBtn");
registerEmailBtn.click(function (e) {
e.preventDefault();
SaveEmailAddress();
$("#step1").addClass("d-none");
$("#step2").removeClass("d-none");
});
});
function SaveEmailAddress() {
var user = {
ID: $("#emailId").val(),
Email: $("#emailField").val()
};
$.ajax({
type: "POST",
contentType: "application/json; charset=UTF-8",
url: "/api/UserManagement/Register",
data: JSON.stringify(user),
dataType: "json",
success: function (response) {
console.log(response);
}
});
}
当我检查控制台时,带有从我的控制器返回的数据的对象就在那里。
控制器功能:
Function Register(user As User) As JsonResult
user.ConfirmationCode = codeGenerator.CreateConfirmationCode()
Dim id = _userData.AddEmailAddressLastId(user)
user.ID = id
Return Json(user)
End Function
输出控制台:
下一步应该是确认代码,当我从 actionresults 返回视图时,这些方法有效,但我似乎无法弄清楚如何将我的对象的 id 传递给下面的方法。
<HttpGet>
Function GetConfirmCode(Optional ByVal id As Integer = 0) As JsonResult
Dim user As New User
If id > 0 Then
user = _userData.GetUserByID(id)
user.ConfirmationCode = ""
End If
Return Json(user)
End Function
<HttpPost>
Function ConfirmCode(Optional user As User = Nothing) As JsonResult
Dim enteredCode = user.ConfirmationCode
Dim givenCode = _userData.GetConfirmationCode(enteredCode)
If String.IsNullOrEmpty(givenCode) Or String.IsNullOrWhiteSpace(givenCode) Then
TempData("ErrorMessage") = "Codes don't match"
Return Json(user)
End If
user = _userData.GetUserWithConfirmationCode(givenCode)
Return Json(New With {user.ID}, JsonRequestBehavior.AllowGet)
End Function
我只想将我的注册函数中的 ID 传递给 confirmCode 函数,这样我就可以从我的数据库中检索正确的记录。我尝试过隐藏字段,但似乎无法填充它们。
HTML:
@Using Html.BeginForm()
@<div id="step1">
@Html.HiddenFor(Function(m) m.ID, New With {.id = "emailId"})
@Html.TextBoxFor(Function(m) m.Email, New With {.id = "emailField"})
<button class="mybtn-sm color-btn-default" id="registerEmailBtn">Volgende</button>
<div class="code-link">
<a href="#">Ik heb al een uitnodigingscode ontvangen</a>
</div>
</div>
End Using
@Using Html.BeginForm()
@<div id="step2" class="d-none">
@Html.HiddenFor(Function(m) m.ID, New With {.id = "idField"})
@Html.TextBoxFor(Function(m) m.Email, New With {.id = "checkEmail"})
@Html.TextBoxFor(Function(m) m.ConfirmationCode, New With {.id = "confCodeField"})
<button class="mybtn-sm color-btn-default" id="confCodeBtn">Volgende</button>
</div>
End Using
<div class="login-socials">
<div class="title">
<h3>Aanmelden met</h3>
</div>
<div class="social-links">
<div class="social-link-item"><p><i class="fab fa-facebook"></i> Facebook</p></div>
<div class="social-link-item"><p><i class="fab fa-google"></i> Google</p></div>
<div class="social-link-item"><p><i class="fab fa-linkedin"></i> linkedin</p></div>
</div>
</div>
@*<a href="#" rel="modal:close">Close</a>*@
</div>
</div>
解决方案
我更改了控制器上的 Register 方法以将 id 作为 int 而不是对象本身返回。在ajax调用的成功函数中,我将一个隐藏字段的值设置为传入的int。在下面的方法 ConfirmCode 中,我使用了隐藏字段的值作为参数,并修改了 post 方法以也对 Id 进行检查,而不是使用 httpget 和 httppost。
推荐阅读
- java - JSON 问题 - 如何解决?
- r - “稍后”构建 R 包会生成未定义的符号
- python - django 项目和 django 应用程序可以有不同的 docker 镜像吗?
- javascript - 无法从 html 页面调用缩小的 js 文件中的函数
- django - 当前端依赖于无头 wagtail API 时在 Wagtail 中预览未发布的草稿
- python - 标签数量与决策树回归上的样本不匹配
- c - C程序没有返回任何东西
- perl - perl 使用正则表达式惰性匹配外部文件
- javascript - 取消选中多个复选框后需要内容重新出现
- uml - UML 中的剖面图是什么?