我在页面写了一个ajax ,但是控制器 是 用switch case break 控制的控制器  ,

我想 在case login 方法里  直接 return  , 但是不好使 始终是 null ,

switch($act) {
// 登录方法
case 'login':
$result = json_encode(array(1,'登录成功'));
return $result;
}

ajax success 始终是收不到值的 (如上代码);

要是 在一个控制器中 是可以收到值的 ( 如下代码)

function login (){

  $result = '';

switch($act) {
// 登录方法
case 'login':
$result = json_encode(array(1,'登录成功'));
  //返回值不写在这
  //return $result;
}
  //在这是可以获取到的
  return $result;

}

刚才刚知道 怎么 实现   不用 return  正常用  break  用echo json 值   ajax 即可获取到(如下代码)

 case 'login_personal_center':
$login_type = ForceStringFrom('login_type');
if($login_type == 1){
$mobile_phone = ForceStringFrom('mobile_phone');
#传输过程是加密的 此时应该解密 账号与密码
$password=js_decrypt_openssl(ForceStringFrom('password'));
$reg_status = $cls_user->login($mobile_phone, $password);
$oper_desc = '密码登录';
}elseif($login_type == 2){
$mobile_phone = ForceStringFrom('mobile_phone');
$sms_code = ForceStringFrom('sms_code');
$reg_status = $cls_user->code_login($mobile_phone, $sms_code);
$oper_desc = '验证码登录';

}else{
sys_msg_json(0, '登录方式有误');
}
wap_get_ntt_user_info($mobile_phone);
if($reg_status['status'] != 1) {
sys_msg_json(0, $reg_status['msg']);
}
$_SESSION['fugu_openid'] = '';
$session_id = session_id();
setcookie($GLOBALS['MAIN_KID'], $session_id, time()+86400 * 600,'/',$GLOBALS['MAIN_DOMAIN']);
$refer_url = html_entity_decode($_SESSION['refer_url']);
$nick_name = $GLOBALS['DB']->get_var("SELECT `nick_name` FROM `member_base` WHERE `member_id`='{$reg_status['uid']}' ");
// 记录登陆日志
$oper_date = date('Y-m-d');
$oper_time = date('Y-m-d H:i:s');
$oper_ip = GetIP();
// $login_type 操作类型 1:密码登录,2:验证码登录,3:修改密码
$sql = "INSERT INTO `wap_user_login_log`
SET `member_id` = '{$reg_status['uid']}',
`mphone` = '{$mobile_phone}',
`oper_type` = '{$login_type}',
`oper_desc` = '{$oper_desc}',
`oper_date` = '{$oper_date}',
`oper_time` = '{$oper_time}',
`oper_ip` = '{$oper_ip}'
";
$GLOBALS['DB']->query($sql);
//同步wap端用户信息给cap
sync_wap_user($reg_status['uid'],1,2,$mobile_phone);
#在这里 直接输出就行
echo json_encode(array("error" => 1 , "data" => $refer_url , "mess" => $nick_name , "unionid" => get_unionid_for_sensor($reg_status['uid']) , "sensor_data" => get_user_sensor_info($reg_status['uid'])));
exit;
//sys_msg_json(1, $_SESSION['refer_url'],$nick_name);
break;

个人总结:1.break 和return  都是 结束 switch 流程  但是 return  是直接结束 不继续往下执行 , break  是会继续往下执行,

     2.return  在 switch 里写是没有返回值的,在switch 外 return 是有返回值的,如果有不对请给出指正,谢谢!

       3.不用return 用echo 输出

												

switch case return return 返回不了值的原因的更多相关文章

  1. C#--Switch Case语句的返回

    C#中switch case语句的返回不只是用break关键字,break语句是用来阻止贯穿的最常见的方式.也可以用其他语句来替代它.如下面代码所示 static int Main(string[] ...

  2. js switch case 判断的是绝对相对===,值和类型都要相等

    js switch case 判断的是绝对相对===,值和类型都要相等

  3. C# 利用键值对取代Switch...Case语句

    swich....case 条件分支多了之后,会严重的破坏程序的美观性. 比如这个 上述代码是用于两个进程之间通信的代码,由于通信的枚举特别的多,所以case的分支特别的多.导致了代码的可读性,可维护 ...

  4. jquery中ajax用return来返回值无效

    jquery中,ajax返回值,有三种写法,只有其中一种是成功的 /** * async:false,同步调用 * 返回1:2 * 失败 * 分析:ajax内部是一个或多个定义的函数,ajax中ret ...

  5. python- 如何return返回多个值

    函数的return 语句只能返回一个值,可以是任何类型. 因此,我们可以“返回一个 tuple类型,来间接达到返回多个值 ”. 例:   x 除以 y 的余数与商的函数 def    F1 ( x, ...

  6. return 的返回值与结束功能

    前言:大家好~我是阿飞~在js中return是很重要的基础.一定要彻底掌握理解它哦.否则js学习到中后期很容易懵逼的+_+ 什么是return? 1.在js中return是一个表达式语句,如果后面什么 ...

  7. defer、return、返回值,这三者的执行逻辑

    defer.return.返回值,这三者的执行逻辑是: return 最先执行,return 负责将结果写入返回值中:接着defer执行,可能修改返回值:最后函数携带当前返回值退出.

  8. go中defer的理解--defer、return、返回值之间执行顺序

    defer可以读取有名返回值 func c() (i int) { defer func() { i++ }() return 1 } 输出结果是2. 在开头的时候,我们知道defer是在return ...

  9. python return 返回多个值

    python return 返回多个值,实际返回的是一个tuple: #!/usr/bin/env python # -*- coding: utf-8 -*- def rt(): return 1, ...

  10. Golang中defer、return、返回值之间执行顺序的坑

    原文链接:https://studygolang.com/articles/4809 Go语言中延迟函数defer充当着 cry...catch 的重任,使用起来也非常简便,然而在实际应用中,很多go ...

随机推荐

  1. iis 无法在Web服务器上启动调试。打开的URL的IIS辅助进程当前没有运行

    今天开发又遇到老问题了,记录一下. 最近换了电脑 win10+vs 2010+oracle11g 客户端. IIS 发布的项目,开始是 把localhost 换成ip地址 总是报 iis 无法在Web ...

  2. 小程序中使用less

    小程序中使用Less 原生小程序不支持less,其他基于小程序的框架大体都支持,如wepy,mpvue,taro等.但是仅仅因为一个less功能,而且引入一个框架,肯定是不可取的.因此可以用以下方式来 ...

  3. 前端将JSON数据格式化显示

    很简单 1 formatJsonData(jsonData) { 2 var smapleDetailData = JSON.stringify(JSON.parse(jsonData), null, ...

  4. 使用python+poco+夜神模拟器进行自动化测试。

    https://blog.csdn.net/saint_228/article/details/84889017 网易最近出的一款自动化UI测试工具:Airtest 挺火的,还受到谷歌的推荐.我试着用 ...

  5. HDK_节点开发:SOP_ComputeVisibility

    Houdini版本:18.5.596 节点概述:剔除模型在某视线方向下所有不可见面. 参数界面: 输入:三角化的模型(左),可选输入遮挡模型(右) 原理:在画布上绘制该方向上的最近深度,作为判定各面可 ...

  6. dead code?

    public static void main(String[] args) { DriverBase dbase = new DriverBase(); dbase.driverBase(); dr ...

  7. Edge浏览器相关

    Ctrl+T 新建页面 Ctrl+W 关闭页面 不可复制的页面,前加read: 若是不可访问 变read://http:// 阅读可翻译,也可有图片字典 还可用插件: 截图软件:Snipaste  微 ...

  8. Netty基本编写

    一. public class Server { public static void main(String[] args) throws Exception { //1 创建线两个程组 //一个是 ...

  9. Epoll的使用例子

    本篇文章在上一篇的基础上,使用 epoll  实现了一个事件监听和回调处理的模块.如何编写一个使用该模块的例子呢? 监测什么类型的fd,监测什么类型的事件,监测到事件以后需要做什么?后来可以看看如何将 ...

  10. Java实验 继承与接口

     一.实验目的 1.理解 Java 语言的继承和多态特性: 2.掌握变量的隐藏.方法的覆盖.重载: 3.掌握抽象类和接口的使用. 二.实验要求 1.根据实验步骤中提出的要求,使用eclipse等开发工 ...