点击按钮,我想删除数据库中的内容。
以下是我的点击处理程序。
$('.deleteLesson').click(function () {
$.get('/Assignment/Modules/DeleteLesson.cshtml?LessonID=' + lessonID,function(data){
});
});
在DeleteLesson.cshtml中,我有以下
var db = Database.Open("database");
db.Query("DELETE FROM Lessons WHERE LessonID=@0", Request.QueryString["LessonID"]);
当$.get
运行时,SQL会在我的数据库上执行,但会强制刷新我的原始页面。我无法弄清楚为什么。通过故障排除,我发现它纯粹是导致刷新的db.Query
行,而不是别的。
要明确:我可以注释掉db.Query行,它完全按照我的意愿工作(除了它不删除项目)
答案 0 :(得分:3)
我不知道是笑还是哭...事实证明我的live.js
正在强制刷新,因为它看到了更改,并希望为我更新页面。 (按照预期,我从未期望它在这些情况下这样做。)
感谢大家的帮助......
答案 1 :(得分:2)
评论有点长 - 但是在不运行查询时它有效的事实很有意思。如果您从文档page中尝试以下操作会发生什么:
请求页面并忽略结果 - (最简单的调用):
$('.deleteLesson').click(function () {
$.get('/Assignment/Modules/DeleteLesson.cshtml?LessonID=' + lessonID);
});
警告每个可能的结果 - 看看调用的处理程序是否有意义或被调用:
var url = '/Assignment/Modules/DeleteLesson.cshtml?LessonID=' + lessonID;
var jqxhr = $.get(url, function() {
alert( "success" );
})
.done(function() {
alert( "second success" );
})
.fail(function() {
alert( "error" );
})
.always(function() {
alert( "finished" );
});
如何做这个帖子:
$.ajax({
type: "POST",
url: "/Assignment/Modules/DeleteLesson.cshtml",
data: { LessonID: lessonID }
})
.done(function() {
alert( "Record Deleted" );
});
最后,您是否尝试使用$.ajax
而不是$.get
速记来调用?这样,您就可以访问其他options。
答案 2 :(得分:1)
尝试
$('.deleteLesson').click(function (e) {
e.preventDefault();
$.get('/Assignment/Modules/DeleteLesson.cshtml?LessonID=' + lessonID,function(data){
//code here
});
});
答案 3 :(得分:0)
试试这个:
$('.deleteLesson').click(function (el, event) {
event.preventDefault();
$.get('/Assignment/Modules/DeleteLesson.cshtml?LessonID=' + lessonID,function(data){
});
});
还要检查lessonID是否正确传递给QueryString集合。由于这个原因,SQL Query可能会失败。
答案 4 :(得分:0)
在您的控制器中创建操作,并且不要使用对cshtml页面的调用。
public class LessonControler{
[AllowGet]
public JsonResult DeleteLesson(long LessonID){
//DoTheDeletion magic here
return Json(new {Done="OK", Error=""}, JsonRequestBehavior.AllowGet);
}
}
并更改javascript以匹配新的操作调用
$('.deleteLesson').click(function () {
$.get('/Lesson/DeleteLesson?LessonID=' + lessonID,function(data){
});
});
甚至可以更好地将其转换为帖子jQuery.post()