我正在尝试创建一个jquery / ajax脚本。目的是从数据库中获取数据,比较successFunc中的结果,并对mvc actionResult执行下一个ajax调用,该调用将根据结果呈现视图。由于某种原因,它无法正常工作。
git add .
ActionResults方法之一:
IDispose
在调试期间,我可以看到对ActionResult Contact()进行了调用,但它没有呈现视图。知道为什么代码不起作用吗?
答案 0 :(得分:1)
您获取视图的ajax调用应遵循以下模式,这是我用于密码重置的模式:
$.ajax({
url: '@Url.Action("ActionName","ControllerName")',
cache: false,
data: { userId: userId, newPassword: password },
type: 'GET',
success: function (data) {
$('#unlockResult').html(data);
},
});
动作如下所示,并返回 PartialView :
public async Task<ActionResult> UnlockUserAccount(string userId, string newPassword)
{
//other stuff here
return PartialView("_AjaxResponse");
}
ajax调用的data
部分中的success
参数是PartialView的html,然后将其注入到页面中的div中:
<div id="unlockResult"></div>
在我的场景中,PartialView会返回一些添加到现有页面的成功/失败HTML。如评论中所述,如果您尝试加载一个全新的页面,那么您就不想使用ajax。
答案 1 :(得分:0)
首次调用ajax后,你还没有结束GetPageData函数。将其写下如下并检查 -
function GetPageData() {
debugger;
$.ajax({
type: "Post",
url: '/Track/GetPageData',
dataType: "json",
data: param = "",
success: successFunc,
error: errorFunc
});
}
function successFunc(data, status) {
$.ajax({
type: "Post",
url: '/Track/Contact',
dataType: 'json',
success: successF,
error: errorF
});
}
function successF() {
alert('services');
}
function errorF() {
alert('servicesFail');
}
function errorFunc() {
alert('servicesFail');
}
答案 2 :(得分:0)
最后我使用了一个适合我的解决方案:
function GetPageData() {
$.ajax({
type: "Post",
url: '/Track/GetPageData',
dataType: "json",
data: param = "",
success: successFunc,
error: errorFunc
});
function successFunc(data, status) {
alert('data; '+data+', '+'status: '+status);
if (data == 'services') {
window.location = "/Track/Services";
}
else if (data == 'contact') {
window.location = "/Track/Contact";
}
else{
window.location = "/Track/About";
}
}
感谢您的帮助