【问题标题】:jQuery response fail when fetch data using web method使用 Web 方法获取数据时 jQuery 响应失败
【发布时间】:2016-05-27 09:08:54
【问题描述】:

我已经实现了一个 web 方法来获取单个记录.. web 方法工作正常但是。 jQuery AJAX 中未显示数据

jQuery & Ajax 代码

function GetBillDetail() {
                debugger;
                var ClientId = jQuery('#<%=HiddenFieldCompanyId.ClientID%>').val()
                $.ajax({
                    type: "POST",
                    url: "<%=mstr_WebsitePath%>webservice/ClientSearch.asmx/GetBillDetaill",
                    data: '{ClientId: "' + ClientId + '" }',
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function (r) {// Data Not Getting Here
                        debugger;
                        var billReport = r.d;
                            jQuery('#ClientName').html(billReport.ClientName);
                            jQuery('#CityName').html(billReport.City);
                            jQuery('#ClientAddress').html(billReport.Address);
                            jQuery('#ClientPhoneNo').html(billReport.PhoneNo);
                    },
                    failure: function (r) {
                        alert(r.d);
                    }
                });
            }

网络方法:

<WebMethod()> _
    Public Function GetBillDetaill(ByVal ClientId As String) As List(Of BillReport)
        Dim billReportList As New List(Of BillReport)
        Dim mrow_Bill As DataRow
        With BillingDetailBOL.getBillCorrectionDetailBOL(ClientId)
            For Each mrow_Bill In .Rows
                Dim billReport As New BillReport()
                billReport.ClientName = mrow_Bill("ClientName").ToString()
                billReport.City = mrow_Bill("LocalityName").ToString()
                billReport.Address = mrow_Bill("Address").ToString()
                billReport.PhoneNo = mrow_Bill("Phone").ToString()
                billReportList.Add(billReport)
            Next
        End With

        Return billReportList
    End Function

通过 Web 方法调用 BOL 方法

Public Shared Function getBillCorrectionDetailBOL(ByVal ClientId As String) As DataTable
        Try
            _ILog.WriteToLog("", Severity.Information, "BillingDetailBOL.vb", "getBillCorrectionDetailBOL", "Get Client bill Detail", Level.INFO)
            Dim mobj_dset As New DataSet

            Return BillingDetailDAL.GetBillCorrectionDetailDAL(ClientId).Tables(0)
        Catch piEx As PIException
            _ILog.LogException("", Severity.ProcessingError, "BillingDetailBOL.vb", "getBillCorrectionDetailBOL", piEx)
            Throw piEx
        Catch ex As Exception
            _ILog.LogException("", Severity.ProcessingError, "BillingDetailBOL.vb", "getBillCorrectionDetailBOL", ex)
            Throw ex
        End Try
    End Function

BOL 调用 DAL 方法

Public Shared Function GetBillCorrectionDetailDAL(ByVal mstr_ClientId As String) As DataSet
        Try
            _ILog.WriteToLog("", Severity.Information, "BillingDetailDAL.vb", "GetBillCorrectionDetailDAL", "Get Client Detail", Level.INFO)
            Dim commandparameters() As SqlParameter = New SqlParameter(0) {}
            commandparameters(0) = New SqlParameter("@ClientId", mstr_ClientId)

            Return SqlHelper.ExecuteDataset(Utilities.WebConfiguration.SQLConnectionString, CommandType.StoredProcedure, "GC_GetCompanyDetail", commandparameters)
        Catch piEx As PIException
            _ILog.LogException("", Severity.ProcessingError, "BillingDetailDAL.vb", "GetBillCorrectionDetailDAL", piEx)
            Throw piEx
        Catch ex As Exception
            _ILog.LogException("", Severity.ProcessingError, "BillingDetailDAL.vb", "GetBillCorrectionDetailDAL", ex)
            Throw ex
        End Try
    End Function

我没有在success: function (r) 获得数据,任何人都知道我该如何解决这个问题。

【问题讨论】:

    标签: jquery asp.net json asp.net-ajax webmethod


    【解决方案1】:

    WebMethod 应该是 static 在 VB.Net 的情况下应该是 Shared

    Public Shared Function GetBillDetaill(ByVal ClientId As String) As List(Of BillReport)
    

    【讨论】:

    • 你好@Mairaj,我正在使用你的代码,但它给了我 500 错误.. 不工作
    • 你能看看你的浏览器控制台吗>
    【解决方案2】:

    尝试以 json 格式的字符串返回您的数据。

    将List数据序列化为json,将函数的返回类型改为字符串。

    【讨论】:

    • 你好@Sumit,我使用了序列化Dim js As New JavaScriptSerializer() Context.Response.Write(js.Serialize(billReportList)),但它也不起作用
    • 光标转到失败部分'失败:函数(r){警报(r.d); }`
    • 您在警报中收到任何特定错误?还有多少条记录由函数返回?
    • 未收到任何特定错误。它在弹出框中给了我ERROR
    • failure : function(jqXHR, textStatus, errorThrown){} 试试这个函数语法是否失败并检查这三个变量的值。
    猜你喜欢
    • 2018-10-15
    • 2017-12-20
    • 1970-01-01
    • 1970-01-01
    • 2019-09-17
    • 2017-01-31
    • 2023-03-14
    • 2016-10-02
    • 1970-01-01
    相关资源
    最近更新 更多