【问题标题】:jQuery calling VB.NET returning entire HTMLjQuery 调用 VB.NET 返回整个 HTML
【发布时间】:2015-08-27 13:07:52
【问题描述】:

我正在尝试使用 jQuery 从 javascript 调用服务器端函数。

AJAX

function addAsset() {
    $.ajax({
        type: "GET",
        contentType: "application/json; charset=utf-8",
        url: "ServerMethods.aspx/AddAsset",
        data: '{}',
        dataType: "json",
        success: function (response) {
            alert(response);
        },
        error: function (jqXHR, textStatus, errorThrown) {
            alert(textStatus);
            alert(errorThrown);
        }
    });
}

ServerMethods.aspx.vb

Public Class ServerMethods
Inherits System.Web.UI.Page

    <System.Web.Services.WebMethod()> _
    Public Shared Function AddAsset() As String

        Return "Hello"

    End Function

End Class

ServerMethods.aspx

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="ServerMethods.aspx.vb" Inherits="AssetManager.ServerMethods" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>

    </div>
    </form>
</body>
</html>

addAsset() 在单击按钮时被调用。当我尝试将 dataType 更改为 text 时,整个 HTML 代码会返回到 ServerMethods。如果 dataType 设置为 json,则会抛出错误“SyntaxError: Unexpected token

有什么想法吗?

【问题讨论】:

    标签: javascript jquery json vb.net


    【解决方案1】:

    您可以尝试使用JavaScriptSerializer 类来序列化从您的网络服务返回的数据。然后在您的 .ajax() 调用的成功处理程序中,您将使用 JSON.parse() 反序列化它。

    网络服务:

    <System.Web.Services.WebMethod()> _
    Public Shared Function AddAsset() As String
        Dim serializer As New JavaScriptSerializer()
        Dim serializedResult = serializer.Serialize("Hello")
        Return serializedResult 
    End Function
    

    Javascript:

    success: function (response) {
        var myHtml= JSON.parse(response);
        alert(myHtml);
    }
    

    大多数现代浏览器都支持JSON.parse()。在不支持的浏览器中,您可以使用json2

    【讨论】:

    • 同样的解析错误。可能与我的 ServerMethods.aspx 页面有关(在原始电子邮件中添加)?
    • @dagonal 你先序列化结果了吗? response 在您的成功处理程序中的值是多少?
    • 我使用的是旧版本的 .NET,所以我没有对 JavaScriptSerializer 的引用。现在我已经将它升级到 .NET 4.0 我的网络应用程序出现了疯狂的错误 =/
    • @dagonal JavaScriptSerializer 可从 .NET 3.5 开始使用。如果您出于某种原因必须继续使用 .NET 2.0,您可以尝试 JSON.Net
    猜你喜欢
    • 2014-06-19
    • 1970-01-01
    • 2015-07-15
    • 1970-01-01
    • 1970-01-01
    • 2010-10-09
    • 2012-07-13
    • 2014-02-21
    • 1970-01-01
    相关资源
    最近更新 更多