javascript - ajax的异步问题
请问ajax
里面的回调函数是返回data再执行函数里面的代码
还是不等data返回就直接执行函数里面的代码
的呢?
如果是第二种情况,该如何避免异步带来的困扰呢?
回复内容:
请问ajax
里面的回调函数是返回data再执行函数里面的代码
还是不等data返回就直接执行函数里面的代码
的呢?
如果是第二种情况,该如何避免异步带来的困扰呢?
success的回调函数是data成功返回后要执行的函数,也就是说要得到data之后才会执行
其他情况下的还有像beforeSend(发送前),complete(请求完成后),error(请求出错)的回调
至于你说的异步带来的困扰我不太明白,可以举例说一下吗?
肯定是返回data再去执行函数里面的代码= = 不返回data就执行= =岂不是等着报错。
ajax
的全称AJAX = Asynchronous JavaScript and XML
(异步的 JavaScript 和 XML)。
首先回答您的问题,success的情况下,当成功返回data以后,才会执行函数。没有返回的话,会很乖巧的等待一会儿时间,这个时间一般是网络延迟时间。同时也可以自己设置。
下面以伟大的jquery
框架的ajax
简单说下。
通常,我会这样使用,name+value的形式。
$.ajax({name:value, name:value, ... })
async
布尔值,表示请求是否异步处理。默认是 true。设置为false,你就关闭了异步,此时一次请求,界面会很卡。beforeSend(xhr)
发送请求前运行的函数。cache 布尔值,表示浏览器是否缓存被请求页面。默认是 true。
complete(xhr,status)
请求完成时运行的函数(在请求成功或失败之后均调用,即在 success 和 error 函数之后)。contentType 发送数据到服务器时所使用的内容类型。默认是:"application/x-www-form-urlencoded"。
context 为所有 AJAX 相关的回调函数规定 "this" 值。
data
规定要发送到服务器的数据。dataFilter(data,type) 用于处理 XMLHttpRequest 原始响应数据的函数。
dataType
预期的服务器响应的数据类型。error(xhr,status,error)
如果请求失败要运行的函数。global 布尔值,规定是否为请求触发全局 AJAX 事件处理程序。默认是 true。
ifModified 布尔值,规定是否仅在最后一次请求以来响应发生改变时才请求成功。默认是 false。
jsonp 在一个 jsonp 中重写回调函数的字符串。
jsonpCallback 在一个 jsonp 中规定回调函数的名称。
password 规定在 HTTP 访问认证请求中使用的密码。
processData 布尔值,规定通过请求发送的数据是否转换为查询字符串。默认是 true。
scriptCharset 规定请求的字符集。
success(result,status,xhr)
当请求成功时运行的函数。timeout
设置本地的请求超时时间(以毫秒计)。traditional 布尔值,规定是否使用参数序列化的传统样式。
type
规定请求的类型(GET 或 POST)。url
规定发送请求的 URL。默认是当前页面。username 规定在 HTTP 访问认证请求中使用的用户名。这个可以模拟用户的登录,再加上password,你懂的。
xhr 用于创建 XMLHttpRequest 对象的函数。
红色部分,是我本人常用的。
等你请求的接口成功响应数据以后回调这个success函数,所以只要你服务端处理正常,data返回的就是你想要的数据
问题的答案,上面已经说了,我就不重复了,我只是想问一下你说的异步的困扰有哪些。