ASP.NET MVC AJAX值不显示
问题描述:
function success(arg) {
var obj = arg.get_response().get_object();
if (obj.ErrorMessage === '') {
var answer = document.createElement('div');
answer.appendChild(document.createTextNode(obj.Answer));
document.getElementById('answers').appendChild(answer);
} else {
document.getElementById('errors').innerHTML = obj.ErrorMessage;
}
}
<% using (Ajax.BeginForm("EditOrganizationMeta", "Organization", new AjaxOptions { HttpMethod = "POST", OnSuccess = "success" })) { %>
<input type="submit" name="button<%=OrganizationMeta.vcr_MetaKey + Lang.int_LangId %>" value="Save" />
<div id="errors"></div>
<div id="answers"></div>
<% } %>
控制器:
[HttpPost]
[ValidateInput(false)]
public ActionResult EditOrganizationMeta(FormCollection collection)
{
return Json(new { Answer = "Record Successfully Saved", ErrorMessages = "Title is required" });
}
的事情是,在JavaScript中的成功方法没有得到所需要的参数。它在那里打印undefined。 javascript方法OnSuccess中有问题吗?
答
首先,快速调试建议:
function success(arg) {
alert(arg);
var obj = arg.get_response().get_object();
...
这是一个简单的检查,看看你得到任何东西在查询中传回给您。
第二个建议:
什么,这实际上呈现为,当您查看网页的源代码...
<% using (Ajax.BeginForm("EditOrganizationMeta",
"Organization", new AjaxOptions {
HttpMethod = "POST", OnSuccess = "success" })) ...
您正在寻找它调用该函数的位题为“成功“ - 它是否将数据传递给函数?如果仍然卡住,请使用表单标记的呈现HTML输出更新您的问题。
答
function success() {
var url = '<%= Url.Action("EditOrganizationMeta", "Organization") %>';
$.post(url, null, function(data) {
alert(data["Answer"]);
});
}
这对我的作品