我正在使用jquery所以使用ajax发布数据,但由于某些原因,当我点击提交时,页面不会从aspx转到aspx.vb的背面。 这是我的代码 -
$(document).ready(function() {
$("#btnsave").click(function() {
var firstname = $("#" + '<%=firstname.ClientID%>').val();
$.ajax({
type: "POST",
url: "student.aspx/new_class",
data: "firstname="+ firstname + ";",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function() {
}
});
});
});
new_class是我在vb.net方面的webmethod。现在,如果我在btnsave onclick函数中发出警报,我会在警报中看到firstname值。但是之后页面不会调用new_class函数。 我出错了什么想法?
答案 0 :(得分:2)
该URL不适用于映射到服务器端代码上的方法。
我假设您正在尝试在new_class
中调用名为student.aspx.vb
的方法。这是对的吗?
您要做的是为此请求创建单独的页面。也许像student_ajax.aspx
或类似的东西。你如何组织它取决于你。执行您要执行的操作的最简单方法是将new_class
逻辑设置为新页面中的Page_Load
逻辑。在那个方法中,你将生成JSON(我假设你正在手动和正确地做,但是如果出现这个问题则是另一个问题)返回给客户端。
但请注意,在该页面中,您需要做一些诡计。首先,摆脱页面本身的所有HTML。您希望仅返回 JSON,而不是包含在任何HTML中。然后,当您在代码隐藏逻辑中生成响应字符串时,您需要将标头设置为正确的标头并输出字符串:
Response.Clear()
Response.ContentType = "application/json"
Response.Write(myJSONString)
Response.End()
请注意,这一切都是徒手的,因此在此实现中可能会缺少一两个细节。我知道有更优雅的方法来做到这一点。我相信你可以在Google上找到一两个教程。基本上你要做的是在服务器上为AJAX请求创建一个自定义处理程序,返回JSON数据。