一、前言

最近做前端的时候,发现个奇怪的问题,ajax获取不到返回值了,问题是还是会到success中,也是可以正常打印的,就是没有response,奇怪。

二、正文

1、首先是不走success的问题

不走success且请求是200的话,大部分都是返回值的类型有问题,dateType定义是json,但返回的不是json,修改datetype即可。

2、走success,但是获取不到返回值

去掉dateType之后,走success了,但是没有返回值。这部分查找各种资料都没发现,后面发现是调用方式的问题,普通的ajax请求,访问控制器之后,控制器中的内容直接return即可,但是有一种情况是例外:

控制器:public function index(){test::parseData($this)}

控制器是这种情况的话,处理逻辑是在test类的parseData()方法,我们在parseData()方法处理完逻辑后,不能使用return 返回,要使用echo 'code=200' 这种方式,这样的话ajax才能拿到这个返回值。

  public static function parseData($controller){echo json_encode($data);}

使用echo的时候,就能获取到返回值了。

三、其他问题

1、点击ajax提交,F12查看发现有三个请求

(1) 首先是查看form表单的action部分,还有是否定义onsubmit()方法,定义的话点击提交也会调用这个方法。

(2) 查看提交按钮的typebutton还是submitsubmit的话会自动提交表单,要修改为button,然后调用js进行提交。

2、去掉onsubmit方法,并且修改按钮为button之后,还有两个请求

这个就比较奇怪了,F12点击network,点击Doc发现只有一个请求,但是点击XHR发现有两个请求。代表实际的请求是只有一个的,但是有个js提交的空请求。

(1) 首先是检查form表单外面是否包含有a标签,a标签的href是否有值,最好是去掉href

(2) 采用ajax提交表单的话,去掉formaction,哪怕action=''都不行,我这里是因为这个action出错

(3) 有个类似的问题,可以参考:https://www.cnblogs.com/Simcoder/archive/2011/12/01/2270256.html
      不管是a标签的href还是imgsrc都是http请求,不同浏览器对于这两个属性有不同的方案,firefox浏览器运行时,检查到src=""的img,会自动将src赋值为iis站点设置中的默认页.index.aspx
参考:https://www.cnblogs.com/Simcoder/archive/2011/12/01/2270256.html

3、表单的serializeArray()方法取不到disabled的元素?

答案:

(1)serializeArray()之前把元素的形态改回来。
(2)设置元素为readonly(如果符合应用情景的话)

end

ajax成功进入success但是获取不到返回值相关推荐

  1. 在 C# 中如何获取存储过程的返回值 ?

    咨询区 GurdeepS: 我有下面的查询语句: set ANSI_NULLS ON set QUOTED_IDENTIFIER ON goALTER PROCEDURE [dbo].[Validat ...

  2. linux获取命令的返回值,Shell $?:获取函数返回值或者上一个命令的退出状态

    $?是一个特殊变量,用来获取上一个命令的退出状态,或者上一个函数的返回值. 所谓退出状态,就是上一个命令执行后的返回结果.退出状态是一个数字,一般情况下,大部分命令执行成功会返回0,失败返回1,这和C ...

  3. SpringAop切面中获取方法的返回值

    场景: 需要用到aop统一接口异常的返回值 当接口抛出异常的时候封装成response对象,但是如果不同接口要返回的response不同,需要在执行前获取到接口返回值的类型 如果要取到方法的返回值,需 ...

  4. 统计文件种类数+获取子shell返回值的其它方法

    前言 只是作为一个shell的小小练习和日常统计用,瞎折腾的过程中也是摸到了获取子shell返回值的几种方法: 肯定还有别的方法,跟进程间的通信相关,希望你能提出建议和补充,谢谢~ 完整程序: #! ...

  5. python 多进程multiprocessing 如何获取子进程的返回值?进程池pool,apply_async(),get(),

    案例1 # -*- coding: utf-8 -*- """ @File : 20200318_摄像头多进程流传输.py @Time : 2020/3/18 14:58 ...

  6. php 获取返回值,求助 如何获取php socket 返回值

    使用抓包工具可以看到,就是页面获取不到返回值,怎么办?? function Send_socket_connect($service_port, $address, $in) { header(&qu ...

  7. .Net (C#)委托和事件(获取多个返回值)

    From: http://www.xuebuyuan.com/841530.html 在讲如何获取多个返回值之前先来看一个小例子: private void button1_Click(object ...

  8. python3 协程 返回值_python asyncio 获取协程返回值和使用callback

    1. 获取协程返回值,实质就是future中的task import asyncio import time async def get_html(url): print("start ge ...

  9. 如何获取.then的返回值_仅仅知道如何终止XHR请求,或许对你来说是不够的!

    TLDR: 当我们需要的时候,我们可以通过AbortController接口来终止一个或者多个请求. 前言 到目前为止,我们有两个常用的基本的手段去发送请求进而局部刷新页面内容,其一是XMR(XMLH ...

最新文章

  1. mininet报错解决:Exception: Could not find a default OpenFlow controller和Cannot find required executable
  2. First day in 聚美
  3. BCH再度领涨,BTC能否及时跟上
  4. LAMP之二:LAMP的性能测试以及安装xcache,为php加速
  5. SharedPreferences源码解析
  6. java技术栈有哪些_Java程序员必备的21个核心技术,你都掌握了哪些?
  7. 程序员编程必备名言佳句,提升装逼指数~
  8. 使用Visual Studio.Net,系统报告“automation服务器不能创建对象”错误。解决之道运行:regsvr32 scrrun.dll 就可以了。
  9. 一个非常感人的爱情故事
  10. jQuery----分页插件实现
  11. c语言编程中的幂函数如何编写,c语言幂函数_C语言循环与递归实现整数幂函数...
  12. 2008 r2彻底删除 server sql_sql2008完全卸载工具 彻底完全卸载SQL server2008
  13. Cannot resolve plugin org.apache.tomcat.maven:tomcat7-maven-plugin:<unknown>
  14. php去除富文本编辑器中的内容格式
  15. 小程序毕设选题参考springboot学生选课小程序 java选课系统小程序 在线选课小程序 选课报名小程序 ssm选课系统 uniapp线上选课报名小程序
  16. HDU 4461 The Power of Xiangqi
  17. Java多线程篇--并发关键字synchronized和volatile
  18. vue里面使用echarts实现根据浏览器屏幕大小自适应
  19. Ubuntu 安装Docker 常用命令
  20. 如何录制屏幕视频?有哪些录制技巧?

热门文章

  1. 5弹出阴影遮罩_千文详述Cocos Creator弹出式对话框实现技术,着实硬核
  2. c++ 遍历多级目录
  3. python and or 优先级
  4. mxnet cannot import name 'nd'
  5. layui学习资料汇总
  6. wing 切换python版本
  7. Jupyter安装r内核
  8. C++编程优化——让你的代码飞起来
  9. 荣耀mgaic2鸿蒙系统,华为没有抛弃荣耀!我看着当年4400买的荣耀Magic2,不争气地哭了...
  10. mysql索引4种结构_mysql索引:四种类型,两种方法