第二次回调ajax web方法的问题

时间:2015-09-24 23:16:20

标签: javascript jquery asp.net ajax

所以我有这个ajax方法,帮助我从表中找到所选行,并将信息显示到一系列字段中。问题是第一次进行通话工作真的很好。但是,当我搜索另一条记录时,数据不会显示,我在网络浏览器控制台中收到此错误:

numPlayersSelected + "/" + 55

“Detalles?是json带回来的阵列。所以我认为请求的时间有问题,对此有什么建议吗?这是ajax方法:

Uncaught TypeError: Cannot read property 'Detalles' of null

我希望有人能帮助我......谢谢!

更新 这是将我的信息转换为JSon

的方法
return $.ajax({
        type: "POST",
        url: "../../../ServiciosWeb.asmx/CargarDetallesRequisicion",
        data: '{IdRequisicion:"'+ idRequisicion +'" }',
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        cache: false
});

当我被指定为null时,我检查数据的返回,是的,它带来了信息,这就是为什么我的时间与时间有关。这是我调用Function DataSetToJSON(ds As DataSet) As String Dim dict As New Dictionary(Of String, Object) For Each dt As DataTable In ds.Tables Dim arr(dt.Rows.Count - 1) As Object For i As Integer = 0 To dt.Rows.Count - 1 arr(i) = dt.Rows(i).ItemArray Next dict.Add(dt.TableName, arr) Next Dim json As New JavaScriptSerializer Return json.Serialize(dict) End Function 方法的地方:

$.ajax

此条件位于 if (idRequisicion > 0) { console.log(idRequisicion); $.when( CargarDetalles() ).done(MostrarDetalles); }

解决:

所以它来了:

$(document).ready

忽略BlocUI,这是新的。总之,这解决了我的问题可能不是最有效的方法,但形成的时刻工作正常。

1 个答案:

答案 0 :(得分:1)

jQuery.when期望延迟对象:

jQuery.when( deferreds ) Returns: Promise
  

提供一种基于一个或多个执行回调函数的方法   对象,通常是表示异步事件的延迟对象。

您应该将您的ajax请求直接放在$ .when内,而不是函数调用,如下所示:

 $.when(
       $.ajax({
        type: "POST",
        url: "../../../ServiciosWeb.asmx/CargarDetallesRequisicion",
        data: '{IdRequisicion:"'+ idRequisicion +'" }',
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        cache: false
}
        ).done(MostrarDetalles);

如果您需要相同的设置,也许您应该只返回像$.ajax(CargarDetalles())这样的ajax设置而不是完整的请求