为什么我发送像这样的ajax请求一切正常
$(".btnDeleteSong").click(function () {
var songId = $(this).attr('name');
$.ajax({
type: 'POST',
url: "/Home/DeleteSong/",
data: { id: songId },
success: ShowMsg("Song deleted successfully"),
error: ShowMsg("There was an error therefore song could not be deleted, please try again"),
dataType: "json"
});
});
但是当我将匿名函数添加到成功时它总是向我显示错误消息,尽管该歌曲仍然被删除
$(".btnDeleteSong").click(function () {
var songId = $(this).attr('name');
$.ajax({
type: 'POST',
url: "/Home/DeleteSong/",
data: { id: songId },
success: function () { ShowMsg("Song deleted successfully"); },
error: function () {
ShowMsg("There was an error therefore song could not be deleted, please try again");
},
dataType: "json"
});
});
如果我想在ajax调用成功的事情上做的很少,我需要能够使用匿名函数,我知道它应该如何完成,但是我做错了什么? 我希望成功消息不显示错误。
function ShowMsg(parameter) {
$("#msg").find("span").replaceWith(parameter);
$("#msg").css("display", "inline");
$("#msg").fadeOut(2000);
return false;
}
答案 0 :(得分:0)
确保您的操作返回Json数据。
“json”:将响应评估为JSON并返回JavaScript对象。在jQuery 1.4中,JSON数据以严格的方式解析;任何格式错误的JSON都会被拒绝,并抛出一个解析错误。 (有关正确的JSON格式的更多信息,请参阅json.org。)
答案 1 :(得分:0)
您的操作方法肯定会返回Json数据。我有类似的代码,看看是否有帮助。
public ActionResult GetAllByFilter(Student student)
{
return Json(new { data = this.RenderPartialViewToString("PartialStudentList", _studentViewModel.GetBySearchFilter(student).ToList()) });
}
$("#btnSearch").live('click',function () {
var student = {
Name: $("#txtSearchByName").val(),
CourseID: $("#txtSearchByCourseID").val()
};
$.ajax({
url: '/StudentRep/GetAllByFilter',
type: "POST",
data: JSON.stringify(student),
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function(result) {
$("#dialog-modal").dialog("close");
RefreshPartialView(result.data);
}
, error: function() { alert('some error occured!!'); }
});
});
上面的代码用于重新加载局部视图。在你的情况下,它应该是直截了当的。
谢谢, 普利文