ajax的异步问题

请问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,你就关闭了异步,此时一次请求,界面会很卡。

  • beforeSendxhr 发送请求前运行的函数。

  • cache 布尔值,表示浏览器是否缓存被请求页面。默认是 true。

  • completexhr,status 请求完成时运行的函数(在请求成功或失败之后均调用,即在 success 和 error 函数之后)。

  • contentType 发送数据到服务器时所使用的内容类型。默认是:”application/x-www-form-urlencoded”。

  • context 为所有 AJAX 相关的回调函数规定 “this” 值。

  • data 规定要发送到服务器的数据。

  • dataFilterdata,type 用于处理 XMLHttpRequest 原始响应数据的函数。

  • dataType 预期的服务器响应的数据类型。

  • errorxhr,status,error 如果请求失败要运行的函数。

  • global 布尔值,规定是否为请求触发全局 AJAX 事件处理程序。默认是 true。

  • ifModified 布尔值,规定是否仅在最后一次请求以来响应发生改变时才请求成功。默认是 false。

  • jsonp 在一个 jsonp 中重写回调函数的字符串。

  • jsonpCallback 在一个 jsonp 中规定回调函数的名称。

  • password 规定在 HTTP 访问认证请求中使用的密码。

  • processData 布尔值,规定通过请求发送的数据是否转换为查询字符串。默认是 true。

  • scriptCharset 规定请求的字符集。

  • successresult,status,xhr 当请求成功时运行的函数。

  • timeout 设置本地的请求超时时间(以毫秒计)。

  • traditional 布尔值,规定是否使用参数序列化的传统样式。

  • type 规定请求的类型(GET 或 POST)。

  • url 规定发送请求的 URL。默认是当前页面。

  • username 规定在 HTTP 访问认证请求中使用的用户名。这个可以模拟用户的登录,再加上password,你懂的。

  • xhr 用于创建 XMLHttpRequest 对象的函数。

红色部分,是我本人常用的。

等你请求的接口成功响应数据以后回调这个success函数,所以只要你服务端处理正常,data返回的就是你想要的数据

问题的答案,上面已经说了,我就不重复了,我只是想问一下你说的异步的困扰有哪些。

发表评论

电子邮件地址不会被公开。 必填项已用*标注