首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >jQuery:Ajax调用成功后返回数据?

jQuery:Ajax调用成功后返回数据?

提问于 2017-12-25 03:50:20
回答 2关注 0查看 434

有这样的一个简单的调用脚本

代码语言:txt
AI代码解释
复制
function testAjax() {
代码语言:txt
AI代码解释
复制
    $.ajax({
代码语言:txt
AI代码解释
复制
      url: ""getvalue.php"",  
代码语言:txt
AI代码解释
复制
      success: function(data) {
代码语言:txt
AI代码解释
复制
         return data; 
代码语言:txt
AI代码解释
复制
      }
代码语言:txt
AI代码解释
复制
   });
代码语言:txt
AI代码解释
复制
}

但如果这样

var output = testAjax(svar); // output will be undefined...

那么怎样才能返调用数据?下面的代码似乎不工作...

代码语言:txt
AI代码解释
复制
function testAjax() {
代码语言:txt
AI代码解释
复制
    $.ajax({
代码语言:txt
AI代码解释
复制
      url: ""getvalue.php"",  
代码语言:txt
AI代码解释
复制
      success: function(data) {
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
      }
代码语言:txt
AI代码解释
复制
   });
代码语言:txt
AI代码解释
复制
   return data; 
代码语言:txt
AI代码解释
复制
}

回答 2

嗝屁

发布于 2017-12-25 06:16:46

不能从异步函数中返回任何东西。你可以回报的是一个承诺。我解释了在这些问题的答案中,jQuery中的承诺是如何工作的:

返回AJAX调用数据的JavaScript函数

jQuery jqXHR - 取消链接调用,触发错误链

如果你能解释你为什么要返回数据,以后又想怎么处理,那么我可能会给你一个更具体的答案。

一般来说,而不是:

代码语言:txt
AI代码解释
复制
function testAjax() {
代码语言:txt
AI代码解释
复制
  $.ajax({
代码语言:txt
AI代码解释
复制
    url: "getvalue.php",  
代码语言:txt
AI代码解释
复制
    success: function(data) {
代码语言:txt
AI代码解释
复制
      return data; 
代码语言:txt
AI代码解释
复制
    }
代码语言:txt
AI代码解释
复制
  });
代码语言:txt
AI代码解释
复制
}
代码语言:txt
AI代码解释
复制
你可以这样写你的testAjax函数:
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
function testAjax() {
代码语言:txt
AI代码解释
复制
  return $.ajax({
代码语言:txt
AI代码解释
复制
      url: "getvalue.php"
代码语言:txt
AI代码解释
复制
  });
代码语言:txt
AI代码解释
复制
}

那么你可以得到这样的承诺:

代码语言:txt
复制
代码语言:txt
AI代码解释
复制
var promise = testAjax();

你可以存储你的承诺,你可以传递它,你可以在函数调用中用它作为参数,你可以从函数中返回它,但是当你最终想要使用由AJAX调用返回的数据时,你必须像这样做:

代码语言:txt
AI代码解释
复制
promise.success(function (data) {
代码语言:txt
AI代码解释
复制
  alert(data);
代码语言:txt
AI代码解释
复制
});

(有关简化语法,请参阅下面的更新。)

如果你的数据在这个时候是可用的,那么这个函数将被立即调用。如果不是的话,只要数据可用,它就会被调用。

完成这一切的关键是你的数据在调用$ .ajax之后不能立即使用,因为它是异步的。承诺是一个很好的功能抽象说:我不能返回你的数据,因为我还没有它,我不想阻止,让你等待,所以这是一个承诺,而不是,你将能够稍后再使用它,或者把它交给其他人,并完成它。

大叔也犯二

发布于 2017-12-25 06:14:44

从函数返回数据的唯一方法是进行同步调用,而不是异步调用,但是在等待响应时会冻结浏览器。

你可以传递一个处理结果的回调函数:

代码语言:txt
AI代码解释
复制
function testAjax(handleData) {
代码语言:txt
AI代码解释
复制
  $.ajax({
代码语言:txt
AI代码解释
复制
    url:"getvalue.php",  
代码语言:txt
AI代码解释
复制
    success:function(data) {
代码语言:txt
AI代码解释
复制
      handleData(data); 
代码语言:txt
AI代码解释
复制
    }
代码语言:txt
AI代码解释
复制
  });
代码语言:txt
AI代码解释
复制
}

像这样调用它:

代码语言:txt
AI代码解释
复制
testAjax(function(output){
代码语言:txt
AI代码解释
复制
  // here you use the output
代码语言:txt
AI代码解释
复制
});
代码语言:txt
AI代码解释
复制
// Note: the call won't wait for the result,
代码语言:txt
AI代码解释
复制
// so it will continue with the code here while waiting.
和开发者交流更多问题细节吧,去 写回答
相关文章
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
jQuery解析ajax 返回的json
一、controller /** * 检查预订开始时间和结束时间的合法性 * @param startTime * @param endTime * @return */ @RequestMapping(value = "checkTime") @ResponseBody public String checkTime(String startTime, String endTime) { int space=Time
week
2018/08/24
2.4K0
ajax parsererror报错,jQuery为ajax请求返回“ parsererror”[通俗易懂]
我一直在从jquery收到针对Ajax请求的“ parsererror”,我尝试将POST更改为GET,以几种不同的方式(创建类等)返回数据,但我似乎无法弄清楚问题出在哪里。
全栈程序员站长
2022/09/07
1.5K0
JQuery处理json与ajax返回JSON实例
json数据是一种经型的实时数据交互的数据存储方法,使用到最多的应该是ajax与json配合使用了,下面我来给大家介绍jquery处理json数据方法。 JSON中对象通过“{}”来标识,一个“{}”代表一个对象,如{“AreaId”:”123”},对象的值是键值对的形式(key:value)。  “[]”,标识数组,数组内部各个数据之间通过“,”分割,如[“AreaId”:”123”,”AreaId”:”345”]。 很多情况下是对象数组,那就是这样: [{“AreaId”:”123”},{“AreaId
joshua317
2018/04/10
3K0
jQuery ajax - ajax() 方法jQuery ajax - ajax() 方法
http://www.w3school.com.cn/jquery/ajax_ajax.asp
一个会写诗的程序员
2018/08/17
14.6K0
JQuery ajax调用asp.net的webMethod
在vs2010中,用JQuery ajax调用asp.net 2.0的  webMethod 方法时,怎么都调不出来,原来和3.5 有点出入。
跟着阿笨一起玩NET
2018/09/19
2.2K0
JQuery ajax调用asp.net的webMethod
JQuery ajax调用asp.net的webMethod
本文章转载:http://www.cnblogs.com/zengxiangzhan/archive/2011/01/16/1936938.html
跟着阿笨一起玩NET
2018/09/19
2.1K0
jquery ajax步骤,jquery ajax(ajax请求的五个步骤jQuery)
AJAX是与服务器交流数据的艺术,它在不重载全部页面的情况下,完成了对部分网页的更新。
全栈程序员站长
2022/08/29
1.7K0
jquery ajax步骤,jquery ajax(ajax请求的五个步骤jQuery)
Jquery Ajax 跨域调用asmx类型 WebService范例
摘要:Ajax 在 Web 2.0 时代起着非常重要的作用,然而有时因为同源策略(SOP)(俗称:跨域问题(cross domain)) 它的作用会受到限制。在本文中,将学习如何克服合作限制。本文以asmx方式搭建webservice作为测试用后端,给出完整的前后端调用解决方案、范例代码。
全栈程序员站长
2022/09/06
1.6K0
Jquery Ajax 跨域调用asmx类型 WebService范例
jQuery ajax - ajax()方法
什么是 AJAX? AJAX = 异步 JavaScript 和 XML(Asynchronous JavaScript and XML)。
江一铭
2022/06/17
9.4K0
jQuery Ajax
AJAX简介 AJAX 是与服务器交换数据的技术,它在不重载全部页面的情况下,实现了对部分网页的更新。 AJAX = 异步 JavaScript 和 XML(Asynchronous JavaScr
静默虚空
2018/01/05
1.1K0
jquery ajax
ajax技术的目的是让javascript发送http请求,与后台通信,获取数据和信息。ajax技术的原理是实例化xmlhttp对象,使用此对象与后台通信。ajax通信的过程不会影响后续javascript的执行,从而实现异步。
Devops海洋的渔夫
2019/05/30
1.3K0
jquery ajax
image.png
用户5760343
2022/05/13
1K0
jquery ajax
jquery datatable调用.clear().draw()方法后不能清空表格数据
那么这种情况下不能通过.clear().draw()方法来清除datatable,因为draw方法会引起table reload方法调用!
johnhuster的分享
2022/03/28
1.5K0
MyBatis + MySQL返回插入成功后的主键id
这是最近在实现perfect-ssm中的一个功能时碰到的一个小问题,觉得需要记录一下,向MySQL数据库中插入一条记录后,需要获取此条记录的id值,以生成对应的key值存入到redis中,id为自增int主键。 修改 原代码为: <insert id="insertArticle" parameterType="Article"> insert into ssm_article(article_title,article_create_date,article_content,add_name) valu
程序员十三
2018/03/15
4K0
MyBatis + MySQL返回插入成功后的主键id
Ajax与jQuery异步加载数据
一次性从服务器数据库中读取数据并传送到前端页面上是不现实的,一方面会加重服务器的压力,另一方面客户的带宽资源也会被占用。Ajax刚好可以解决数据异步加载的问题。Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式、快速动态网页应用的网页开发技术,无需重新加载整个网页的情况下,能够更新部分网页的技术。
里克贝斯
2021/05/21
10.9K0
jQuery ajax方法
1、新建一个ajax.html页面 我们通过点击按钮执行ajax方法,将提交的数据显示在上图下面那个div中 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script type="text/javascript" src="js/jquery-1.11.1.js"></script> <style type="text/css">
别团等shy哥发育
2023/02/25
8630
jQuery ajax方法
Jquery和Ajax
1、  ajax基础知识(http://www.0377joyous.com/archives/484.html) 2、  load()函数示例代码 <button id=”send”>触发</but
苦咖啡
2018/05/07
1.2K0
jQuery的ajax
今天公司实习生问我jQuery的ajax怎么写,这玩意不是很简单吗 $.ajax({ url: "/cowBeer", //url method: "post", //请求方式 contentType: "application/json", //参数类型 data: JSON.stringify({ //这里面是参数 "name":"cowBeer"
阿超
2022/08/16
7100
jQuery ajax() 方法
jQuery 库拥有完整的 Ajax 兼容套件,其中的函数和方法允许我们在不刷新浏览器的情况下从服务器加载数据。
阳光岛主
2019/02/19
2.6K0
jQuery ajax() 方法

相似问题

托管模式调用接口成功,其他接口返回40003?

1879

COS Javascript 上传图片putObject成功后没有返回ETag?

11.4K

实时音频调用混流成功后,视频没有录制?

1229

我本地向IM端发送消息成功后调用getConversionList() 返回的会话列表size=0?

2333

点播API接口调用成功后,回调传过来的是什么格式的数据?

1469
相关问答用户
腾讯云TDP | TDP会员擅长3个领域
到家集团 | 技术VP擅长5个领域
腾讯云TDP | KOL擅长5个领域
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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