2010-12-20 148 views
2

我使用jQuery所以使用ajax发布数据,但由于某种原因,当我点击提交,页面不从aspx到aspx.vb在背面。 这里是我的代码 -ajax发布方法不工作在vb.net

$(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函数中添加了一个警报,我会看到警报中的名字值。但是页面在那之后不会调用new_class函数。 任何想法我错了?

+0

什么是在服务器端设置解释'somepage.aspx/somemethod'作为页面的方法调用?..这不是ASP.net的本地功能。 – 2010-12-20 18:07:10

+0

两件事:1)您的网站方法URL看起来很奇怪。这可能是一个旧的IIS或其他性质的MVC实现吗? 2)当您手动调用该URL(在客户端和服务器上)时会发生什么? – David 2010-12-20 18:13:32

+0

每当我接受,它会告诉我登录,即使我已经登录。反正,Quintin,你说我的设置是错误的。你能指导我写一些文档吗,所以我可以解决这个问题吗?它的IIS7与asp.net和vb.net在后面。没有MVC。我唯一的目标是将数据传递给后端代码。如果有人觉得另一种方法更好,请告诉。 – weoiol 2010-12-20 18:18:55

回答

2

该URL对于映射到服务器端代码上的方法是不正确的。

我假设你正打算在student.aspx.vb中调用一个名为new_class的方法。它是否正确?

你想要做的是为这个请求创建一个单独的页面。也许像student_ajax.aspx或类似的东西。你如何组织它取决于你。最简单的做法是让逻辑new_class成为新页面中的Page_Load逻辑。在该方法中,您将生成JSON(假设您正在手动且正确地执行此操作,但如果出现这种情况,则返回不同的问题)返回到客户端。

但是,请注意,在该页面中,您需要做一些技巧。首先,摆脱页面本身的所有HTML。您只想返回 JSON,不包含在任何HTML中。然后,当你在生成代码隐藏逻辑响应字符串,你要的标题设置为正确的头文件和输出的字符串:

Response.Clear() 
Response.ContentType = "application/json" 
Response.Write(myJSONString) 
Response.End() 

请注意,这是所有的写意,所以有可能是这个实现中的一个或两个细节。而我知道有更优雅的方式来做到这一点。我相信你可以在Google上找到一两个教程。基本上你要做的就是在服务器上创建一个自定义处理程序,以处理返回JSON数据的AJAX请求。