Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jqueryajax请求只同步工作,不';异步时不返回_Jquery_Asynchronous - Fatal编程技术网

jqueryajax请求只同步工作,不';异步时不返回

jqueryajax请求只同步工作,不';异步时不返回,jquery,asynchronous,Jquery,Asynchronous,我正在通过jQueryAjax向.NET通用处理程序(.ashx)发出请求 我正在返回JSON,我已经在JSONLint上验证了它,但无法发布,因为它是敏感数据 问题是调用仅在同步完成时返回(async:false)。当异步完成时,它永远不会返回async:false将调用我的成功函数以及所有全局函数async:true将只调用全局函数ajaxStart和ajaxSend,async:false将调用这些函数和其他函数 我不知道如何进一步调试或确定为什么没有响应返回 $.ajax({ t

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

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

问题是调用仅在同步完成时返回(
async:false
)。当异步完成时,它永远不会返回
async:false
将调用我的成功函数以及所有全局函数
async:true
将只调用全局函数
ajaxStart
ajaxSend
async: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");
});

我想这是因为URL中的“.”。你有没有试着把它去掉?检查一下,他们也有类似的东西


希望它有帮助

我在一个带有您的配置sans async属性的页面中运行了代码,它似乎对我很好

<%@ 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>

$(文档).ajaxError(函数(){
警报(“ajaxError”);
}).ajaxSend(函数(){
警报(“ajaxSend”);
}).ajaxStart(函数(){
警报(“ajaxStart”);
}).ajaxStop(函数(){
警报(“ajaxStop”);
}).ajaxSuccess(函数(){
警惕(“ajaxSuccess”);
}).ajaxComplete(函数(){
警报(“ajaxComplete”);
});
$.ajax({
类型:“POST”,
限时:60万,
数据:{'type':'check'},
数据类型:“json”,
响应类型:“json”,
错误:函数(请求、错误类型、错误消息){
警报(“错误”);
},
成功:功能(数据、状态、请求){
警惕(“成功”);
},
url:“../Ajax/GenericData.ashx”,
完成:函数(){
警报(“此处”);
}
});
我把所有的警报信息都整理好了。。当async:false从您的配置中删除时,您能否检查浏览器的控制台部分,并查看您的请求到底发生了什么。

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

超时中存在拼写错误。。也。在firebug的网络面板或chrome的控制台中检查xhr请求,这样您就可以知道问题是什么。在.ashx中放置一个调试点,并查看当两种类型的请求都启动时,该点是否被击中。我使用的按钮是在请求期间以异步方式提交页面,当然,sync会将其保持足够长的时间,以便回应页面太短,以至于加载速度太快,无法看到光点。