我构建了一个用于刷新查找表的存储过程。没有返回任何行。它只是在运行。
这是我在视图上的Ajax链接,可以启动它:
@Ajax.ActionLink(
"Refresh Sample Points",
" MakeNewSPIDTable",
"Home",
new AjaxOptions {
HttpMethod = "POST",
OnSuccess = "success"
}
)
这是Json在我的家庭控制器中的操作结果:
[HttpPost]
public JsonResult MakeNewSPIDTable()
{
var bitBucket = _db.ExecuteFunction("sp_RefreshWSFSPIDs");
return Json("sp ran", JsonRequestBehavior.DenyGet);
}
(我硬编码的"sp ran"文本只是为了发回一些东西。)
以下是应该弹出警报的成功功能:
function success(responseObject) {
alert(responseObject);
}
我可以用各种方式运行存储过程,但不能用Ajax。我甚至怀疑Ajaz/Jason语法是否正确
感谢Alex、Moy和StackOverflow。现在我有了新的工具来解决这个疯狂科学家的问题。这是Mozilla中的Firebug,它准确地显示了Javascript错误发生的位置。有趣的是,IE4以前只是在窗口的底部框架中出现错误。
这似乎有效,并返回成功或失败的警报。我更改了存储过程名称中的一个字母,它"失败"并弹出警报。换句话说,OnSuccess和OnFailure起了作用。他们只有一种警觉。
@Ajax.ActionLink(
"Refresh Sample Points",
"MakeNewSPIDTable",
"Home",
new AjaxOptions {
HttpMethod = "POST",
OnSuccess = "handleResultResponseRefreshSamplePoints()",
OnFailure = "handleFailedSPIDrefresh()"
}
)
我可以接受它,因为它满足了我的需要。然而,我无法让Controller成功返回字符串,或者我对Json返回对象没有任何语法知识。但我希望我的简单解决方案能帮助其他人。
[HttpPost]
public JsonResult MakeNewSPIDTable()
{
var bitBucket = _db.ExecuteFunction("sp_RefreshWSFSPIDs");
var name = "Json ran stored procedure";
return Json(name, JsonRequestBehavior.DenyGet);
}