我知道这个问题已经问了很多,但是我很感兴趣,因为我的方法为什么总是不断返回“ Undefined”,而ajax却从未真正调用方法后面的代码。我从另一个响应中复制了此代码,并且应该可以工作。我尝试了许多不同的Ajax调用,但没有一个可以到达后端。 (此外,如果格式化已关闭,我深表歉意。)
'VB
Public Class WebForm1
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
End Sub
<System.Web.Services.WebMethod()>
Public Shared Function GetCurrentTime(ByVal name As String) As String
Return "Hello " & name & Environment.NewLine & "The Current Time is: " &
DateTime.Now.ToString()
End Function
End Class
'JavaScript和标记
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="WebForm1.aspx.vb" Inherits="TargetWeightEditor.WebForm1" %>
<!DOCTYPE html>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js" type="text/javascript"></script>
<script type = "text/javascript">
function ShowCurrentTime() {
$.ajax({
type: "POST",
url: "WebForm1.aspx/GetCurrentTime",
data: '{name: "' + $("#<%=txtUserName.ClientID%>")[0].value + '" }',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: OnSuccess,
failure: function(response) {
alert(response.d);
}
});
}
function OnSuccess(response) {
alert(response.d);
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
Your Name :
<asp:TextBox ID="txtUserName" runat="server"></asp:TextBox>
<input id="btnGetTime" type="button" value="Show Current Time"
onclick = "ShowCurrentTime()" />
</div>
</form>
</body>
</html>
编辑:我将“ json”更改为“文本”,但并没有改变问题。
答案 0 :(得分:1)
如果存在根本问题,这可能无法解决,但请先尝试这些操作。有些只是为了清理代码。
从所有脚本标签中删除type ="text/javascript"
。 HTML 5中不需要它。
在ajax
调用中,删除dataType: "json",
。您在那里不需要任何东西。让它返回默认类型。
在asp:TextBox
上,添加ClientIDMode="Static"
。然后,您将不需要$("#<%=txtUserName.ClientID%>")
。更改之后,请尝试以下操作:
data: JSON.stringify({ name: $("#txtUserName").val() }),
// you might want/need to set the user name before the
// ajax call:
var un = $("#txtUserName").val();
$.ajax({
...
data: JSON.stringify({ name: un }),
...
将您的脚本移动到HTML下方,紧接在body标记之前。
进行更改后,也请更新原始帖子中的代码。 HTH。