【问题标题】:Asynchronous calls not working properly ajax asmx webservice?异步调用无法正常工作 ajax asmx webservice?
【发布时间】:2014-10-21 13:31:52
【问题描述】:

我有一个关于 asp.net webforms 的奇怪问题,我解决了,但我不喜欢我解决它的方式,所以我正在寻找其他选项。

我在 webservice(.asmx) 中有一个方法,我使用 jquery ajax ($.ajax) 调用它,当我不使用断点时它工作正常,但如果我使用断点回调将返回即使我没有停止调试方法也会出错。

让我试着更好地解释一下:

场景 1 - 我在没有调试的情况下执行该方法。 (异步:真) 场景 1 结果 = 效果很好。

场景 2 - 我执行方法调试。 (异步:真) 场景 2 结果 = 在我完成对方法的调试之前,它返回到 JQUERY,并且错误状态只是“错误”,没有关于它的重要信息。

场景 3 - 我在没有调试的情况下执行该方法。 (异步:假) 场景 3 结果 = 效果很好。

场景 4 - 我在没有调试的情况下执行该方法。 (异步:假) 场景 4 结果 = 效果很好。

客户端:

$.ajax({
        type: "POST",
        url: "WBSJsonRequests.asmx/InsertInterConsulta",
        data: JSON.stringify(parameters),
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (JsonResponseData) {

            if (JsonResponseData.d === "success") {
                alert("Se han agregado la esta especialidad correctamente!");
            }
            else {
                alert("Se ha producido un error en el servidor: " + JsonResponseData.d);
            }
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {

            console.log(textStatus);

            alert(textStatus);
        }

    });

服务器端:

<WebMethod(Description:="Inserta Interconsulta")>
<ScriptMethod(ResponseFormat:=ResponseFormat.Json)>
Public Function InsertInterConsulta(InterConsultaList As InterConsulta, IdCita As Integer) As String
    Dim Searializer As New JavaScriptSerializer()
    Try
        InterConsultaList.IdCita = IdCita
        Meds.InterConsulta.GuardarInterConsulta(InterConsultaList.IdEspecialidad, InterConsultaList.IdCita)
        Return "success"
    Catch ex As Exception
        Return ex.Message
    End Try
End Function

结束函数

【问题讨论】:

  • 必须有一些信息。究竟是什么引发了错误?从服务器返回到 AJAX 调用的实际响应(响应代码、内容、适用的标头等)是什么?
  • 我说“错误状态只是'错误',没有关于它的重要信息。”,errorThrown 变量是空白的,textStatus 只是说“错误”,xmlhttprequest 是空白的。响应状态为 200 ok
  • 为什么我的得分不好??????,我没有做错什么...

标签: jquery asp.net ajax web-services asp.net-ajax


【解决方案1】:

我能够找出发生了什么,问题是如果你有 asyn: true,并且你正在通过一个事件发出一个 ajax 请求,你需要在之前执行一个“e.preventDefault()”做请求,否则它会一遍又一遍地做。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-10
    相关资源
    最近更新 更多