请问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返回的就是你想要的数据
问题的答案,上面已经说了,我就不重复了,我只是想问一下你说的异步的困扰有哪些。