外部函数取ajax返回的数据

2023-10-27

1、ajax回调数据使用回调函数

业务场景:上传图片后的取返回来的图片地址进行前台的展示

  • 前端上传图片需要对大图片进行图片压缩,然后再上传,小图片不做限制,总的文件比较到。这里我封装了全局的方法,方法正常使用。但是碰到一个问题,当想把上传图片后的地址返回来的时候,一开始想return回去。但是这个返回了null。

    function sendImage(url,fileObj) {
    let imageurl=”;//这里定义一个用作图片返回的url
    var form = new FormData(); // FormData 对象
    form.append(“file”, fileObj); // 文件对象
    xhr = new XMLHttpRequest(); // XMLHttpRequest 对象
    xhr.open(“post”, url, true); //post方式,url为服务器请求地址,true 该参数规定请求是否异步处理。
    xhr.onload = function(){
    //这里假如上传图片成功后
    imageurl=成功的返回图片url
    }; //请求完成
    xhr.send(form); //开始上传,发送form数据
    return imageurl;
    }

我们在项目的其他地方调用这个函数是无法正常获得这个return的imageurl,因为ajax请求是异步的,当回调函数还没执行完成的时候,这个函数已经把imageurl返回来了,自然是无法获得我们想要的结果。

解决方法
  • 1、把异步请求改成同步请求xhr.open(“post”, url, false);

这里碰到了个诡异问题,请求确实是同步了,数据也可以获得到了,外面调用的时候debugger发现js竟然绕过我调用的语句先往下面走了。所以我这个并不能完全解决我的问题。所以用了回调函数的方法作为参数的方法,算是个不错的方法

*2、回调函数作为参数,其实就是把一个函数传进来了

function sendImage(url,fileObj,method) {
    let imageurl='';//这里定义一个用作图片返回的url
    var form = new FormData(); // FormData 对象
    form.append("file", fileObj); // 文件对象
    xhr = new XMLHttpRequest();  // XMLHttpRequest 对象
    xhr.open("post", url, true); //post方式,url为服务器请求地址,true 该参数规定请求是否异步处理。
    xhr.onload = function(){
        //这里假如上传图片成功后
        method();

    }; //请求完成
    xhr.send(form); //开始上传,发送form数据
    return imageurl;
}

对上面的函数做一个处理,很容易看到函数加了一个参数(方法参数)

使用的时候就可以

sendImage(url,fileObj,function (value) {
    //value就是回调的数据
    // 这里就可以对数据做处理了
})

非常好用,在vue项目里面this指针也在里面没有影响。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

外部函数取ajax返回的数据 的相关文章

  • Spring Security 的 AJAX 请求给出 403 Forbidden

    我有一个基于spring boot spring security thymeleaf的网站 在某些情况下我也使用ajax 问题 我在 Spring Security 中使用表单登录安全性 在浏览器中 登录后我可以使用rest API GE
  • Ajax调用完成后执行函数

    我是 Ajax 新手 我尝试在使用 for 循环时使用 Ajax Ajax 调用之后 我正在运行一个使用 Ajax 调用中创建的变量的函数 该函数只执行两次 我认为 Ajax 调用可能没有足够的时间在循环开始之前进行调用 有没有办法在运行
  • 使用来自Processing-JS的JSON

    我想使用编写一个应用程序处理 JS http processingjs org 并且我希望能够使用服务器端数据加载它 我还没有编写服务器端 所以我可以使用任何东西 但似乎明显的 AJAX 事情是使用 JSON 将数据上传到页面中 如何从我的
  • 使用 JSF 2.0 Ajax 响应访问 bean 函数的返回值?

    我正在使用 JSF 2 0 构建一个调度应用程序 用户可以在其中将项目添加到日历中 然后编辑这些对象 我广泛使用 AJAX 来防止页面刷新 我遇到的问题是从使用 AJAX 调用的函数中获取返回值
  • Ajax ModalPopup 在 IE8 - IE9 中显示错误

    我在我的aspx web VB NET 中使用ModalPopup AJAX 使用母版页 它在 ie6 Firefox 中工作正常 但是当我使用IE7 IE8 IE9时 当我想打开Modalpopup时 显示不正确 屏幕被放大 当我使用鼠标
  • 如何从 Python 返回 JSON 值?

    我从如下所示的 jQuery 文件发送 ajax 请求 该请求需要 JSON 格式的响应 jQuery ajax url Control getImageDetails file id currentId type GET contentT
  • 从 json 数组中获取成对的值

    首先 这是我从 php 源获取的 json 值 oid 2 cid 107 oid 4 cid 98 oid 4 cid 99 之后 我想要得到并且oid值以及相应的cid值例如 oid 2 and cid 107一口气 oid 4 and
  • 如何将 php 变量传递给 ajax

    我有一个自动加载页面 我需要能够基于变量检索数据 因为该变量必须返回特定值 下面的代码基于检索所有数据 但我只需要基于 list 的少数数据 Page php
  • 如何从 webmethod 向 AJAX 调用返回异常?

    我回来了List
  • 在 JSP 中从 JavaScript/jQuery 调用后端 Java 方法

    我有一个 JSP 其中有一个select包含实体种类名称的列表 当我选择一个实体类型时 我需要填充另一个实体类型select包含所选实体类型的字段名称的列表 为此 我调用了一个 JavaScript 函数onchange event 在 J
  • jQuery PUT ajax 请求不起作用

    我正在尝试在 couchdb 中保存 Backbone 模型 因此我已经覆盖了save向 couchdb 发出 ajax 请求的方法 ajax type PUT url http 127 0 0 1 5984 movies this get
  • 从 ajax json 填充数据表

    我的表没有填充 我可以看到它正在获取正确的 JSON 收到的 JSON 数据如下所示 id 1 name FooBar predicted 0 points 1 section id 1 detail alias HTML table ta
  • jQuery ajax POST 导致立即 GET 到同一 URL

    我使用 jQuery 1 4 2 和 Django 后端 并使用 Debian 上的 Firefox 3 5 15 进行开发 我使用 ajax 将一些数据发布到我的服务器 服务器将数据反射回浏览器 Firefox 正在发送 POST 然后立
  • Web API 2.0 使用 pascalcase 模型接收驼峰式命名的 JSON 数据

    我正在尝试对我的 Web API 进行 PUT 调用 我在 WebApiConfig cs 中设置了以下内容 以处理以驼峰形式将数据发送回我的 Web 项目 config Formatters JsonFormatter Serialize
  • 使用 ASP.Net 和 Ajax 的登录页面

    我正在尝试使用 html ajax 和 ASP NET 制作登录页面 数据确实传递给 ajax 函数 但是当我调试 asp 页面时 用户名和密码以 NULL 发送 该代码应该获取用户名和密码 然后返回用户 ID html页面 div Use
  • jQuery mCustomScrollbar 不适用于 ajax 内容

    window load function content 1 mCustomScrollbar scrollButtons enable true ajax code function beauty of ceylon content te
  • 从 WCF 服务返回接口

    我有一些 NET 远程处理代码 其中在某些服务器端类中实现的工厂方法返回具体对象的接口 也在同一台服务器上执行 NET 远程处理会自动创建代理 并允许我将接口传递给客户端 然后客户端可以直接调用它们 接口示例 public interfac
  • Django Ajax ModelForm 向 request.POST 提交一个空表单

    对于 django ajax 和 jquery 我是个新手 所以如果我的问题显得微不足道 我提前道歉 我已经在这个问题上摸不着头脑有一段时间了 但我正在尝试使用 ajax 和 jquery 通过 jQuery UI 提供的模式对话框窗口提交
  • 这里的退货是如何进行的?

    新问题 但是为什么表达式 from n number from firstFactorPtr Factor1 有人可以向我解释一下这是如何工作的吗 返回 因子 1 这将返回到 main 其中 factor 1 为什么 isPrime 返回t
  • 当php脚本通过ajax运行时显示进度条

    我有一个通过 ajax 向服务器提交值的表单

随机推荐

  • 软件物理架构与逻辑架构在软件架构中的应用

    在不同的架构设计方法中出现的软件架构视图种类很多 本文介绍最常用的两种架构视图 逻辑架构视图和物理架构视图 并通过具体案例的分析说明如何运用它们进行架构设计 当观察和描述事物大局的时候 逻辑架构和物理架构是最常用的角度 比如 以我们办公室里
  • 工厂方法模式(Factory Method)-最易懂的设计模式解析

    前言 在上文提到的最易懂的设计模式系列解析 简单工厂模式 发现简单工厂模式存在一系列问题 工厂类集中了所有实例 产品 的创建逻辑 一旦这个工厂不能正常工作 整个系统都会受到影响 违背 开放 关闭原则 一旦添加新产品就不得不修改工厂类的逻辑
  • C#入门——Console.Write()与Console.WriteLine()

    两者区别 Console Write abc 输出到控制台中 且在最后位置不换行 参数至少有一个以上 Console WriteLine 输出到控制台中 且在最后位置换行 有无参数均可 若没有参数 则为空行 具体用法 class Progr
  • 硬核!10分钟教你搭建一个本地版GPT4.0!

    今天10分钟手把手教会你在自己电脑上搭建一个官方原版的GPT4 0 不用ChatGPT账号 不用API 直接免费使用上官方原版的GPT4 0 对 你没看错 不仅是正版GPT4 0 还完全免费 而且整个部署流程极其简单 没有任何操作难度 这个
  • 七大视频剪辑软件,达人必备,你用过几个?

    随着自媒体和短视频时代的到来 越来越多的人参与其中 各大平台短视频内容层出不穷 找一款实用的视频编辑软件是很有必要的 如果你还在为视频剪辑而迷茫 不知道如何选择剪辑软件 那么今天这篇文章你一定要读一读 首先分享一下近年比较受欢迎的两款电脑剪
  • 获取百度图片(正则表达式)

    在爬取百度图片的过程中 因为自己写的是转成Json的格式 但是在爬取的过程中会出现各种各样的错误 最终躺了 还是使用正则表达式比较稳 import requests import os import re def get images fr
  • 【应用回归分析】CH4 假设检验与预测1——一般线性假设

    目录 前言 引例 1 例1 2 例2 一 假设检验的基本思想 二 定理 4 1 1 1 定理内容 2 定理证明 前言 在上一章 我们讨论了回归参数的几种估计方法 依据这些方法得到回归系数的估计 就可以建立经验回归方程 但是 所建立的经验回归
  • java 线性表-----数据表示形式(源代码)

    1 import java util Arrays 2 3 public class SequenceList
  • 01 自己实现一个可执行的链表【Linked List 链表】

    include
  • 项目中途引入Mybatis-plus后报错:Caused by: java.lang.ClassNotFoundException: org.mybatis.logging.LoggerFactory

    项目中途引入Mybatis plus后报错 Caused by java lang ClassNotFoundException org mybatis logging LoggerFactory 1 网上有提供解决办法1 在引入mybat
  • tomcat启动没有反应以及不写日志解决方法

    公司更新项目功能在更新的时候本来五分钟搞定的 但是突发意味导致服务停了一个小时 先说一下遇到这个问题的经过 我首先把需要更新的文件上传上去之后 把tomcat停止了一下 然后再去启动的时候遇到一个问题 启动无数遍都没有一丁点的反应 而且也不
  • python二级题库(百分之九十原题) 刷题软件推荐

    目录 刷题软件 模拟python二级考试 选择题 二 基本操作 三 简单应用 四 综合应用 刷题软件 文末有联系方式 注明来意 选择题 1 下列叙述中正确的是 A 解决一个问题可以有不同的算法 且它们的时间复杂度可以是不同的 B 算法的时间
  • 输入一组数组,回车结束的方法

    1 while scanf d b 2 3 array i b 4 if n getchar 5 6 array i 0 7 break 8 9 include
  • 阿里云ECS遭挖矿程序攻击解决方法(彻底清除挖矿程序,顺便下载了挖矿程序的脚本)

    一 杀死挖矿程序进程 在服务器上使用top指令查看cpu的使用情况 发现有一个叫java的程序占用cpu高达99 9 PID USER PR NI VIRT RES SHR S CPU MEM TIME COMMAND 5778 root
  • IOS如何返回到tabbar第一个按钮的主页面

    如图所示 当我们点击 消息 好友 我的按钮之后 如果用户没有登录 会出现登录页面 而此时我们点击登录页面的返回按钮 想返回到地图页面 该如何实现呢 在返回按钮的方法中实现如下代码 self navigationController tabB
  • 常见开源协议大白话说明

    GPL 只要你用了任何该协议的库 甚至是一段代码 那么你的整个程序 不管以何种方式链接 都必须全部使用GPL协议 并遵循该协议开源 商业软件公司一般禁用GPL代码 但可以使用GPL的可执行文件和应用程序 AGPL 即Affero GPL 是
  • Spring学习总结(2)——Spring的常用注解

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 本文汇总了Spring的常用注解 以方便大家查询和使用 具体如下 使用注解之前要开启自动扫描功能 其中base package为需要扫描的包 含子包 1
  • IOU_GIOU_DIOU_CIOU_EIOU优缺点总结

    IOU GIOU DIOU CIOU EIOU 优点 IOU算法是目标检测中最常用的指标 具有尺度不变性 满足非负性 同一性 对称性 三角不等性等特点 GIOU在基于IOU特性的基础上引入最小外接框解决检测框和真实框没有重叠时loss等于0
  • 群体智能,多个机器人协同搬运!

    来源 湖南大学机器人视觉感知与控制技术国家工程实验室 1 项目简介 基于室内监控摄像头的多机器人协作分拣搬运系统 主要利用中央处理服务器通过获取多个分布在四周的网络监控摄像头的图像 对处于视频图像中的机器人进行实时精准的三维坐标定位 定位精
  • 外部函数取ajax返回的数据

    1 ajax回调数据使用回调函数 业务场景 上传图片后的取返回来的图片地址进行前台的展示 前端上传图片需要对大图片进行图片压缩 然后再上传 小图片不做限制 总的文件比较到 这里我封装了全局的方法 方法正常使用 但是碰到一个问题 当想把上传图