ajax成功进入success但是获取不到返回值
一、前言
最近做前端的时候,发现个奇怪的问题,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) 查看提交按钮的type
是button
还是submit
,submit
的话会自动提交表单,要修改为button
,然后调用js
进行提交。
2、去掉onsubmit方法,并且修改按钮为button之后,还有两个请求
这个就比较奇怪了,F12
点击network
,点击Doc
发现只有一个请求,但是点击XHR
发现有两个请求。代表实际的请求是只有一个的,但是有个js提交的空请求。
(1) 首先是检查form
表单外面是否包含有a
标签,a
标签的href
是否有值,最好是去掉href
(2) 采用ajax
提交表单的话,去掉form
的action
,哪怕action=''
都不行,我这里是因为这个action出错
(3) 有个类似的问题,可以参考:https://www.cnblogs.com/Simcoder/archive/2011/12/01/2270256.html
不管是a
标签的href
还是img
的src
都是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但是获取不到返回值相关推荐
- 在 C# 中如何获取存储过程的返回值 ?
咨询区 GurdeepS: 我有下面的查询语句: set ANSI_NULLS ON set QUOTED_IDENTIFIER ON goALTER PROCEDURE [dbo].[Validat ...
- linux获取命令的返回值,Shell $?:获取函数返回值或者上一个命令的退出状态
$?是一个特殊变量,用来获取上一个命令的退出状态,或者上一个函数的返回值. 所谓退出状态,就是上一个命令执行后的返回结果.退出状态是一个数字,一般情况下,大部分命令执行成功会返回0,失败返回1,这和C ...
- SpringAop切面中获取方法的返回值
场景: 需要用到aop统一接口异常的返回值 当接口抛出异常的时候封装成response对象,但是如果不同接口要返回的response不同,需要在执行前获取到接口返回值的类型 如果要取到方法的返回值,需 ...
- 统计文件种类数+获取子shell返回值的其它方法
前言 只是作为一个shell的小小练习和日常统计用,瞎折腾的过程中也是摸到了获取子shell返回值的几种方法: 肯定还有别的方法,跟进程间的通信相关,希望你能提出建议和补充,谢谢~ 完整程序: #! ...
- python 多进程multiprocessing 如何获取子进程的返回值?进程池pool,apply_async(),get(),
案例1 # -*- coding: utf-8 -*- """ @File : 20200318_摄像头多进程流传输.py @Time : 2020/3/18 14:58 ...
- php 获取返回值,求助 如何获取php socket 返回值
使用抓包工具可以看到,就是页面获取不到返回值,怎么办?? function Send_socket_connect($service_port, $address, $in) { header(&qu ...
- .Net (C#)委托和事件(获取多个返回值)
From: http://www.xuebuyuan.com/841530.html 在讲如何获取多个返回值之前先来看一个小例子: private void button1_Click(object ...
- python3 协程 返回值_python asyncio 获取协程返回值和使用callback
1. 获取协程返回值,实质就是future中的task import asyncio import time async def get_html(url): print("start ge ...
- 如何获取.then的返回值_仅仅知道如何终止XHR请求,或许对你来说是不够的!
TLDR: 当我们需要的时候,我们可以通过AbortController接口来终止一个或者多个请求. 前言 到目前为止,我们有两个常用的基本的手段去发送请求进而局部刷新页面内容,其一是XMR(XMLH ...
最新文章
- mininet报错解决:Exception: Could not find a default OpenFlow controller和Cannot find required executable
- First day in 聚美
- BCH再度领涨,BTC能否及时跟上
- LAMP之二:LAMP的性能测试以及安装xcache,为php加速
- SharedPreferences源码解析
- java技术栈有哪些_Java程序员必备的21个核心技术,你都掌握了哪些?
- 程序员编程必备名言佳句,提升装逼指数~
- 使用Visual Studio.Net,系统报告“automation服务器不能创建对象”错误。解决之道运行:regsvr32 scrrun.dll 就可以了。
- 一个非常感人的爱情故事
- jQuery----分页插件实现
- c语言编程中的幂函数如何编写,c语言幂函数_C语言循环与递归实现整数幂函数...
- 2008 r2彻底删除 server sql_sql2008完全卸载工具 彻底完全卸载SQL server2008
- Cannot resolve plugin org.apache.tomcat.maven:tomcat7-maven-plugin:<unknown>
- php去除富文本编辑器中的内容格式
- 小程序毕设选题参考springboot学生选课小程序 java选课系统小程序 在线选课小程序 选课报名小程序 ssm选课系统 uniapp线上选课报名小程序
- HDU 4461 The Power of Xiangqi
- Java多线程篇--并发关键字synchronized和volatile
- vue里面使用echarts实现根据浏览器屏幕大小自适应
- Ubuntu 安装Docker 常用命令
- 如何录制屏幕视频?有哪些录制技巧?
热门文章
- 5弹出阴影遮罩_千文详述Cocos Creator弹出式对话框实现技术,着实硬核
- c++ 遍历多级目录
- python and or 优先级
- mxnet cannot import name 'nd'
- layui学习资料汇总
- wing 切换python版本
- Jupyter安装r内核
- C++编程优化——让你的代码飞起来
- 荣耀mgaic2鸿蒙系统,华为没有抛弃荣耀!我看着当年4400买的荣耀Magic2,不争气地哭了...
- mysql索引4种结构_mysql索引:四种类型,两种方法