AJAX:当函数调用失败/错误时,是否可以从服务器端返回自定义错误消息?

问题描述 投票:0回答:2

我有一个vb函数的ajax调用。 vb函数失败,因为查询所隐含的数据表CFG_QUERY_REPORT在数据库中不存在。

我希望将vb中catch中的错误消息返回到ajax的“错误”,以便我可以向用户显示该错误。原因是VB中的错误消息正好说明该表在数据库中不存在,而错误实际上是从此处显示给用户的]

error: function (a, b, c) {
            alert("Ajax call to multiAjax failed: " + a);
        }

不会告诉用户错误是由于表不存在。 Ajax错误消息没有用。

如何显示从vb catch向用户的错误消息?

谢谢

ajax:

function multiAjax(funcName, queryName, onSuccess) {
    var result = null;
    $.ajax({
        type: "POST",
        url: "WebService1.asmx/" + funcName,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (Response) {
            onSuccess(Response)
        },
        data: JSON.stringify({ "queryName": queryName }),
        error: function (a, b, c) {
            alert("Ajax call to multiAjax failed: " + a);
        }
    });
}

VB

<WebMethod(EnableSession:=True)>
    Public Function getQueryNo()
        Try
            Dim queryNumberSql As String
            Dim queryNo As Integer

            Using dr As New DataReader(dif)
                queryNumberSql =
                "SELECT min(unused) AS unused
            FROM (
                 SELECT MIN(t1.QUERY_NUMBER)+1 as unused
                 FROM CFG_QUERY_REPORT AS t1
                 WHERE NOT EXISTS (SELECT * FROM CFG_QUERY_REPORT AS t2 WHERE t2.QUERY_NUMBER = t1.QUERY_NUMBER+1)
                 UNION
                 -- Special case for missing the first row
                 SELECT 1
                 FROM CFG_QUERY_REPORT AS t1
                 WHERE NOT EXISTS (SELECT * FROM CFG_QUERY_REPORT WHERE QUERY_NUMBER = 1)
            ) AS subquery"

                dr.ExecuteReader(queryNumberSql)
                While dr.Read()
                    queryNo = Integer.Parse(dr("unused"))
                End While

                Return queryNo
            End Using
        Catch ex As Exception
            Console.WriteLine($"Error trying to set query number: {ex}")
            Return ex
        End Try
    End Function

我有一个vb函数的ajax调用。 vb函数失败,因为该查询所暗示的dataTable不在CFG_QUERY_REPORT中。我想要从vb中捕获的错误消息...

javascript jquery ajax vb.net asp.net-ajax
2个回答
0
投票

这首先取决于您用于发出请求的库/实现。如果服务器发送错误代码,例如500,某些库将拒绝。


0
投票

@ freedomn-m提供的解决方案:

© www.soinside.com 2019 - 2024. All rights reserved.