0

我正在通过 jQuery ajax 向 .NET 通用处理程序 (.ashx) 发出请求。

我正在返回 JSON,我已在 JSONLint 上进行了验证,但无法发布,因为它是敏感数据。

问题是调用仅在同步完成时返回(async:false)。当异步完成时,它永远不会回来。 async:false将调用我的成功函数以及所有全局函数。 async:true只会调用全局函数,ajaxStart并且会调用这些函数以及其他函数。ajaxSendasync:false

我不知道如何进一步调试或确定为什么没有响应返回。

$.ajax({
    type: "POST",
    async: false,
    cache: false,
    timout: 600000,
    data: request_object.GetQueryString(),
    dataType: "json",
    responseType: "json",
    error: function (request, error_type, error_message) {
        alert("error");
    },
    success: function (data, status, request) {
        alert("success");
    },
    url: "./ReportRequestHandler.ashx",
    complete: function () {
        alert("here");
    }
});

$(document).ajaxError(function () {
    alert("ajaxError");
}).ajaxSend(function () {
    alert("ajaxSend");
}).ajaxStart(function () {
    alert("ajaxStart");
}).ajaxStop(function () {
    alert("ajaxStop");
}).ajaxSuccess(function () {
    alert("ajaxSuccess");
}).ajaxComplete(function () {
    alert("ajaxComplete");
});
4

3 回答 3

0

我发现了问题。用于触发事件的按钮是提交页面并重新加载太快,我看不到任何闪烁。

于 2012-09-20T11:49:27.920 回答
0

我认为是因为“。” 在网址中。您是否尝试删除它?检查这个以及他们有类似的东西

使用异步时jQuery没有得到回复

希望能帮助到你

于 2012-09-19T21:25:45.947 回答
0

我在您的配置无异步属性的页面中运行代码,它似乎对我来说工作正常..

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="Pages" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">

    <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>

    <title></title>

    <script type="text/javascript">
        $(document).ajaxError(function() {
            alert("ajaxError");
        }).ajaxSend(function() {
            alert("ajaxSend");
        }).ajaxStart(function() {
            alert("ajaxStart");
        }).ajaxStop(function() {
            alert("ajaxStop");
        }).ajaxSuccess(function() {
            alert("ajaxSuccess");
        }).ajaxComplete(function() {
            alert("ajaxComplete");
        });
        $.ajax({
            type: "POST",
            timout: 600000,
            data: { 'type': 'check' },
            dataType: "json",
            responseType: "json",
            error: function(request, error_type, error_message) {
                alert("error");
            },
            success: function(data, status, request) {
                alert("success");
            },
            url: "../../Ajax/GenericData.ashx",
            complete: function() {
                alert("here");
            }
        });

    </script>

</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:ScriptManager ID="ScriptManager1" runat="server" />
    </div>
    </form>
</body>
</html>

我按顺序收到了所有警报消息。您能否检查浏览器的控制台部分,并查看从您的配置中删除 async:false 时您的请求到底发生了什么。

于 2012-09-19T21:30:42.597 回答