javascript - Ajax 调用总是以 Undefined 的形式返回并且没有到达后面的代码

标签 javascript jquery asp.net ajax vb.net

我知道这个问题已经被问了很多,但我感兴趣的是为什么我的方法不断返回“未定义”并且 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”更改为“text”,但并没有改变问题。

最佳答案

如果存在潜在问题,这可能无法解决问题,但请先尝试这些操作。有些只是为了清理代码。

删除 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 下方,就在结束正文标记之前。

更改后也更新原始帖子中的代码。 HTH.

关于javascript - Ajax 调用总是以 Undefined 的形式返回并且没有到达后面的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51617974/

相关文章:

javascript - new Date(...) 向前添加一个月

c# - 检测Page_Load中点击了哪个按钮?

.net - 为什么我的提交事件没有被 ASP.NET 中的 jQuery 捕获?

javascript - 如何生成视频缩略图并在将鼠标悬停在进度条上时预览它们?

c# - ASP.NET - ChildActionOnly 和 NonAction 属性之间有什么区别?

javascript - 正则表达式替换逗号

javascript - Angular 2、DataTables.net 和使用 DataTables.net-bs 的分页

javascript - Dynamics CRM 中 clientglobalcontext.js.aspx 的确切用途是什么?

asp.net - PostLogoutRedirectUri 在带有 SPA 的身份服务器 4 中始终为空(Angular 7 OIDC 客户端)

javascript - dojo contentPane,我在我的 ContentPane 中发布带有 href 的 html 代码。 html代码有脚本但不起作用,为什么?