Javascript Ajax成功函数不接收数据

Javascript Ajax成功函数不接收数据,javascript,c#,jquery,ajax,asp.net-mvc,Javascript,C#,Jquery,Ajax,Asp.net Mvc,下面是我的web表单的webmethod,它返回一个数据列表,工作正常: [WebMethod] public static List<SalesInvoiceFinalCalculationEntity> salesInvoiceFinalCalculaiton(string InvoiceNo) { List<SalesInvoiceFinalCalculationEntity> list = new List<SalesInvoiceFinalCalc

下面是我的web表单的webmethod,它返回一个数据列表,工作正常:

[WebMethod]
public static List<SalesInvoiceFinalCalculationEntity> salesInvoiceFinalCalculaiton(string InvoiceNo)
{
    List<SalesInvoiceFinalCalculationEntity> list = new List<SalesInvoiceFinalCalculationEntity>();
    list = SalesInvoiceManager1.salesInvoiceFinalCalculaiton(InvoiceNo);
    return list;
}
以下是数据层和存储过程:

 public static List<SalesInvoiceFinalCalculationEntity> salesInvoiceFinalCalculaiton(string InvoiceNo)
        {
            try
            {


                List<SalesInvoiceFinalCalculationEntity> SalesInvoiceFinalCalculation = new List<SalesInvoiceFinalCalculationEntity>();

                DataSet ds = SqlHelper.ExecuteDataset(Util.ConnectionString, CommandType.StoredProcedure, "sp_salesInvoiceFinalCalculaiton",
                    new SqlParameter("@InvoiceNo", InvoiceNo));

                foreach (DataRow dr in ds.Tables[0].Rows)
                {
                    SalesInvoiceFinalCalculationEntity list = new SalesInvoiceFinalCalculationEntity(dr);
                    SalesInvoiceFinalCalculation.Add(list);
                }
                return SalesInvoiceFinalCalculation;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

为什么在成功功能中未接收到数据

首先,使用
async:false
这是一种不好的做法,因为它会冻结您的窗口以满足您的请求不要使用它。

问题是您必须从
服务器端
方法返回
json
对象,以便在ajax方法的成功回调函数中接收响应

[WebMethod]
public static string salesInvoiceFinalCalculaiton(string InvoiceNo)
{
        List<SalesInvoiceFinalCalculationEntity> list = new List<SalesInvoiceFinalCalculationEntity>();
        list = SalesInvoiceManager1.salesInvoiceFinalCalculaiton(InvoiceNo);
        return JsonConvert.SerializeObject(list);
}
[WebMethod]
公共静态字符串SalesInvoiceFinalCalculaton(字符串InvoiceNo)
{
列表=新列表();
列表=SalesInvoiceManager1.SalesInvoiceFinalCalculaton(InvoiceNo);
返回JsonConvert.SerializeObject(列表);
}

Web请求使用
json
格式。

我认为问题在于,您试图向JavaScript文件发送Java类。您只能发送简单的数据类型数字、字母。据我所知,您试图访问SalesInvoiceFinalCalculationEntity的成员变量

如果是这样的话,您需要将其作为JSON对象发送,并像这样获取数据,然后对其进行解析

AJAX背后的思想是通过而不是使用异步请求冻结网站,为用户提供更好的体验。通过使用

异步:false

消除了AJAX背后的想法。然后,您可以简单地对服务器进行正常调用

使用以下命令:

序列化列表并将其作为字符串返回

然后,在javascript中:

success: function (data) {
    data = JSON.parse(data);
    document.getElementById("txtinvoicevalue").value=(data.totalprice);
    document.getElementById("txtTotalDiscount").value = data.discountamt;
    document.getElementById("txtTotalTaxableValue").value = data.taxableamt;
    document.getElementById("txtTotalCGST").value = data.cgstamt;
    document.getElementById("txtTotalSGST").value = data.sgstamt;
    document.getElementById("txtGrandTotal").value = data.grandtotal;

},
试一试
success:function(data.d)
而不是
success:function(data)
。如果我记得在使用webmethods时,返回对象在data.d中,而不仅仅是data


而且,不管其他答案怎么说。当使用
[webmethod]
属性和jquery-ajax时,您不必将响应对象转换为json。它将自动执行此操作。

最终解决了此问题。我忘了提到

Public

SalesInvoiceFinalCalculationEntity

实体所有变量和
document.getElementById(“txtinvoicevalue”).value=(data.d[0].totalprice)这应该是而不是


document.getElementById(“txtinvoicevalue”).value=(data.totalprice)

您有任何错误吗?它击中了你的方法?@Alexandru IonutMihai是的,它击中了方法,方法返回列表,如果数据。我不能得到任何错误。但它在文本框中显示“未定义”文本。它不会在文本框中显示实际值。您是否尝试过success:function(data.d)?如果内存可用,当使用像您这样的webmethods时,对象实际上在'data.d'中,而不仅仅是'data'中。Service.svc是什么?您使用哪种webservice?事实上,它只是简单的asp.net网络表单,我用ajax调用它。我不知道。。怎么做。。plz指定数据:“{invoicefinalcalc:'+JSON.stringify(invoicefinalcalc)+'}”,如下所示?现在显示错误“当前上下文中不存在JsonConvert”,然后请添加引用。。这是一个nuget packege错误,已解决,但数据未显示在文本框中。@Dinkaveer,在成功函数中使用
console.log(data)
,并告诉我您收到了什么。它将“.d”错误设置为“error-:expected”{'和预期的';'看起来您正在返回一个列表,因此您还需要循环访问您的响应对象?您的对象在浏览器开发工具中是什么样子的?您可以发布吗?
[WebMethod]
public static string salesInvoiceFinalCalculaiton(string InvoiceNo)
{
        List<SalesInvoiceFinalCalculationEntity> list = new List<SalesInvoiceFinalCalculationEntity>();
        list = SalesInvoiceManager1.salesInvoiceFinalCalculaiton(InvoiceNo);
        return JsonConvert.SerializeObject(list);
}
success: function (data) {
    data = JSON.parse(data);
    document.getElementById("txtinvoicevalue").value=(data.totalprice);
    document.getElementById("txtTotalDiscount").value = data.discountamt;
    document.getElementById("txtTotalTaxableValue").value = data.taxableamt;
    document.getElementById("txtTotalCGST").value = data.cgstamt;
    document.getElementById("txtTotalSGST").value = data.sgstamt;
    document.getElementById("txtGrandTotal").value = data.grandtotal;

},