首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >setTimout() ajax请求无法成功工作

setTimout() ajax请求无法成功工作
EN

Stack Overflow用户
提问于 2019-07-08 17:57:56
回答 2查看 43关注 0票数 1

在下面这行代码中

代码语言:javascript
运行
AI代码解释
复制
setTimeout(Comet_IrsaliyeBelgeDurum(sGuid, belgeOid), 10000)

不会让Comet函数等待10秒。该函数正在连续运行。

setTimeout参数似乎没有任何效果。

如何让代码等待10秒?

代码语言:javascript
运行
AI代码解释
复制
function Comet_IrsaliyeBelgeDurum(sGuid, belgeOid) {

            var params = {
                sGuid: sGuid,
                belgeOid: belgeOid
            }

            $.ajax({
                type: "post",
                dataType: "json",
                data: params,
                url: '/BetonHareketler/H_BetonIrsaliyeBelgeDurum',
                success: function (data) {

                    if (data.isSuccess) {

                        if (data.entity == 2 || data.entity == 4) {
                            toastr.success(data.SuccessfullMessage, 'İşlemi Başarılı');
                        }
                        else {
                            toastr.info(data.SuccessfullMessage, 'İşlemi Başarılı');
                            setTimeout(Comet_IrsaliyeBelgeDurum(sGuid, belgeOid), 10000);
                        }

                    }
                    else {
                        toastr.error(data.SuccessfullMessage, 'İşlemi Başarısız');
                    }

                },
                error: function (xhr, ajaxOptions, thrownError) {
                    alert("Bağlantı Hatası. Sayfaya Yenileyin");
                    window.location.replace(window.location.href);
                }
            });

        }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-08 18:01:40

setTimeout接受一个函数,该函数在延迟过后调用。

代码语言:javascript
运行
AI代码解释
复制
setTimeout(Comet_IrsaliyeBelgeDurum(sGuid, belgeOid), 10000);
           ^---------------------------------------^
                      this got evaluated

您的代码所做的就是调用Comet_IrsaliyeBelgeDurum并使用它的返回值作为setTimeout的“函数”。

您需要做的就是将其封装在另一个函数中,如下所示:

代码语言:javascript
运行
AI代码解释
复制
setTimeout(function(){
  Comet_IrsaliyeBelgeDurum(sGuid, belgeOid)
}, 10000);
票数 7
EN

Stack Overflow用户

发布于 2019-07-08 18:02:47

问题在于调用setTimeout的方式:

代码语言:javascript
运行
AI代码解释
复制
setTimeout(Comet_IrsaliyeBelgeDurum(sGuid, belgeOid), 10000);

Javascript是一种按值传递的语言。这意味着,您传递的所有参数在被提供给函数之前都会进行计算。

这意味着您正在将值Comet_IrsaliyeBelgeDurum(sGuid, belgeOid)10000传递给setTimeout。然后调用函数Comet_IrsaliyeBelgeDurum

您要做的是将一个函数(而不是函数的结果)传递给setTimeout。有关示例,请参阅Joseph的答案。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56940285

复制
相关文章
jquery ajax请求成功,数据返回成功,seccess不执行的问题
1.状态码返回200--表明服务器正常响应了客户端的请求; 2.通过firebug和IE的httpWatcher可以看出服务器端返回了正常的数据,并且是符合业务逻辑的数据。 但是,程序就是不进入到回调函数success: function(data){****}而是进入到error: function(data){***} 记得上次是因为存在跨域访问的问题导致。这次查看不存在跨域的问题。此时就很是不解。 事情的来源是这样的: 后台的配置管理模块中有一块是关于国际化的配置,增加国际化描述等等,查询国际化描述。 问题的来源是在输入key='a' 查询前十条数据时发现可以正常的展现数据,但是当我输入key值为z时,并且再查询前20条数据是发现数据不能展现,但是server返回了数据库中的数 据。这时第一反应是事不时数据返回的有问题,粗略的检查了返回的数据发现和第一次查询没有什么明显的区别。但是只查询第十四条数据时发现,显示不出来。这 时候就开始怀疑了数据问题,进而到数据库中查找第十四条数据没有发现什么特别的地方。 这时开始怀疑,难道是JS程序有处理数据兼容性有问题,觉得甚是不可思议。整了大约半小时,越来越觉得不大可能。就放弃了这种想法。 有转向,重新审视数据。 但是发现数据从中间换行了,没太在意。 在纠结了一会儿后问一同事,指出数据可能多了一个"回车键",在其指点下到数据库表中再次查看该条数据发现有一个字段的值多了一个"回车键"。删除后,一切恢复正常。 思考第一次和第二次碰到的问题,我初步认识到: 1. 返回的数据类型一定要符合定义的数据类型。即如果你定义的 dataType 是 json 类型的,那么返回来的数据一定是 json 才可以,平且不然就会执行 error 里的程序块儿。 (1) 同时需要特别的注意返回的JSON数据是否是严格的JSON格式. (2) 也应该严重关切当后台返回的是一个List 数据(List当中的数据是Json格式)时,有没脏数据即不是严格的JSON格式。 很隐蔽的可能是数据某一个字段中在开始或末尾含有特殊字符,以"回车键"、"Tab键"等 这类隐蔽错误的规避措施就是好的编程习惯: a. 对于在页面填写入库的数据最好强制性的做,去空操作<利用客户端最好>。 b. 特殊的业务需注意特殊字符。 这样还不够,因为在开发过程中测试或开发人员自己在数据库中手动添加数据,可能会多加了空格等,导致程序调试,测试带来了麻烦。 这时就需要考虑在后台代码对获取的数据做处理。 2. 原因是ajax请求跨域了,解决方法是在两个文件里都添加一段 js: [/b]document.domain,或者采用Jsonp的方式,如我的前一篇blog中提到的。 还有一点对JQuery 中Ajax的一点其它的认识: 客户端发起请求,得到服务器端的相应是200,<正确拿到服务器响应的数据>没有问题.此时在判断进入success 对应的回调函数还是进入到error对应的回调函数之前,可能会校验一些东西: 1. 返回的每条数据是否是dataType中定义的数据类型。如果有部分数据不是或者哪怕一条数据没有严格的按照dataType定义的类型,程序就会进入到error:function(){****} 2. 请求的域和当前域是否是同一域,如果不是同一域也十分有可能进入error:function(){***}
大道七哥
2019/09/10
3.9K0
AJAX 请求
AJAX 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发 技术。 ajax 是一种浏览器通过 js 异步发起请求,局部更新页面的技术。 Ajax 请求的局部更新,浏览器地址栏不会发生变化 局部更新不会舍弃原来页面的内容
愷龍
2022/10/07
4.9K0
AJAX 请求
AJAX 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发 技术。
一个风轻云淡
2022/11/15
1.6K0
AJAX 请求
ajax请求
如果不需要通过请求主体发送数据,则必须传入null。调用send()后,请求被分发到服务器。
Java架构师必看
2021/08/19
1.8K0
jquery jsonp 解决ajax无法跨域请求的问题
ajax只能请求同一个域下的数据或资源,有时候需要跨域请求数据,就需要用到jsonp技术,jsonp可以跨域请求数据,它的原理主要是利用了<script>标签可以跨域链接资源的特性。jsonp和ajax原理完全不一样,不过jquery将它们封装成同一个函数。
Devops海洋的渔夫
2019/05/30
4.7K2
ajax请求成功但不执行success-function回调函数
今天在进行token返回测试的时候项目不完全还没有统一的返回格式,我用了String返回了token,
余生大大
2022/10/25
1.6K0
ajax请求成功但不执行success-function回调函数
网络请求AJAX
​Ajax即Asynchronous Javascript And XML(异步JavaScript和XML)在 2005年被Jesse James Garrett提出的新术语,用来描述一种使用现有技术集合的‘新’方法,包括: HTML 或 XHTML, CSS, JavaScript, DOM, XML, XSLT, 以及最重要的XMLHttpRequest。 [3] 使用Ajax技术网页应用能够快速地将增量更新呈现在用户界面上,而不需要重载(刷新)整个页面,这使得程序能够更快地回应用户的操作。
郭顺发
2023/07/17
1410
vue ajax 请求
<form action="{{route('admin.node.store')}}" class="layui-form" id="form-node-add" @submit.prevent="doPost"> <div class="layui-form-item"> <label class="layui-form-label"> <span class="x-red">*<
友儿
2022/09/11
1.2K0
ajax同步请求
在使用jq发送ajax到后台时默认是异步请求,会在发送ajax请求的同时继续执行下面的js代码,如果下面的js代码需要使用到ajax传输过来的参数时,就会获取不到,这个时候就应该把异步请求改为同步请求,只有ajax请求响应完成之后才会继续执行下面的ajax代码,例如:
雪地二货
2018/09/18
3.9K0
AJAX取消请求
在进行 AJAX(Asynchronous JavaScript and XML)请求时,有时候我们需要取消正在进行的请求。取消请求可以帮助我们提高用户体验,并减少不必要的网络流量和服务器负载。
堕落飞鸟
2023/05/19
1.9K0
【Ajax】如何通过axios发起Ajax请求
✍️ 作者简介: 前端新手学习中。 💂 作者主页: 作者主页查看更多前端教学 🎓 专栏分享:css重难点教学 Node.js教学 从头开始学习 ajax学习 文章目录 axios   什么是axios   axios发起GET请求   axios发起POST请求   直接使用axios发起get请求   直接使用axios发起post请求 axios   什么是axios Axios是专注于网络数据请求的库,相比于原生的XMLHttpRequest对象,axios简单易用。相比于
坚毅的小解同志的前端社区
2022/11/28
1.7K0
【Ajax】如何通过axios发起Ajax请求
006: Django ajax请求
AJAX = 异步 JavaScript 和 XML。 AJAX 是一种用于创建快速动态网页的技术。 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
李玺
2021/11/22
1.7K0
006: Django ajax请求
Ajax Status请求状态
  这篇文章主要介绍了各类Http请求状态(status)及其含义。   需要的朋友可以过来参考下,希望对大家有所帮助。Web服务器响应浏览器或其他客户程序的请求时,其应答一般由以下几个部分组成:一个状态行,几个应答头,一个空行,内容文档。下面是一个最简单的应答 : 状态行包含HTTP版本、状态代码、与状态代码对应的简短说明信息。   在大多数情况下,除了Content-Type之外的所有应答头都是可选的。但Content-Type是必需的,它描述的是后面文档的MIME类型。虽然大多数应答都包含一个文档,但也有一些不包含,例如对HEAD请求的应答永远不会附带文档。有许多状态代码实际上用来标识一次失败的请求,这些应答也不包含文档(或只包含一个简短的错误信息说明)。 当用户试图通过 HTTP 访问一台正在运行 Internet 信息服务 (IIS) 的服务器上的内容时,IIS 返回一个表示该请求的状态的数字代码。状态代码可以指明具体请求是否已成功,还可以揭示请求失败的确切原因。
Marco爱吃红烧肉
2021/07/23
1.8K0
Ajax 关闭异步请求
在代码中,因为进行了后台的取值操作,导致有些内容还未加载就执行到了新的地方,所以想着 ajax 的异步关闭来解决。
zucchiniy
2019/10/30
4.1K0
AJAX 工作原理
AJAX 全称为“Asynchronous JavaScript and XML”(异步 JavaScript 和 XML),是一种创建交互式网页应用的网页开发技术。它使用:
李玺
2021/11/22
1K0
AJAX 工作原理
Ajax请求携带Cookie
先来了解下xhr xhr,全称为XMLHttpRequest,用于与服务器交互数据,是ajax功能实现所依赖的对象,jquery中的ajax就是对 xhr的封装。 还有axios和fetch请求都属于xhr请求,都是基于标准 Promise 实现。
陈灬大灬海
2020/09/10
3.2K0
Ajax请求携带Cookie
AJAX 不同请求事例
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/105839.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/09
1K0
AJAX设置请求参数
AJAX(Asynchronous JavaScript and XML)是一种用于在 Web 应用程序中进行异步数据交换的技术。在 AJAX 请求中,我们可以通过设置请求参数来传递额外的信息给服务器。这些参数可以是查询字符串、请求头或请求体中的数据。
堕落飞鸟
2023/05/18
1.7K0
AJAX发送POST请求
AJAX(Asynchronous JavaScript and XML)是一种用于在 Web 应用程序中进行异步数据交换的技术。在 AJAX 请求中,我们可以使用 POST 方法发送数据到服务器,以便进行处理和保存。
堕落飞鸟
2023/05/18
4.1K0
Ajax工作流程(原生Ajax)
(1)初始化XMLHttpRequest对象。不同浏览器的差异,需要我们创建一个跨浏览器的对象,并判断XMLHttpRequest对象创建是否成功,如果不成功,则给予提示。
红目香薰
2022/11/29
7910

相似问题

无法停止从setTimout调用的AJAX请求

11

无法发布成功的ajax请求

11

Ajax成功函数似乎无法工作。

22

AJAX请求无法工作

12

无法让AJAX成功消息正常工作

44
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文