当前位置:Gxlcms > PHP教程 > die(json_encode(.没返回

die(json_encode(.没返回

时间:2021-07-01 10:21:17 帮助过:26人阅读

我的ajax代码
$.post('{:U("Safeinfo/txpassadd")}', $("#txadd").serialize(), function(data) { alert("ok");	...


php代码:
tip("100", '交易密码不能与登录密码一样!');


function tip($code, $msg) {    $arr['code'] = iconv('GB2312', 'UTF-8', $code);    $arr['msg'] = iconv('GB2312', 'UTF-8', $msg);	    //die(json_encode($arr));    die(var_json_encode($arr));  //cjq}function var_json_encode($var){  $_var = var_urlencode($var);  $_str = json_encode($_var);  return urldecode($_str); }


结果页面没有弹出那个alert("ok"),说明ajax没返回?

改成这样也不行:
function tip($code, $msg) {    $arr['code'] = iconv('GB2312', 'UTF-8', $code);    $arr['msg'] = iconv('GB2312', 'UTF-8', $msg);	    die(json_encode($arr,JSON_UNESCAPED_UNICODE));  //cjq}


这是为什么呢?


回复讨论(解决方案)

这样也不行:(

function tip($code, $msg) {    $arr['code'] = $code;    $arr['msg'] = $msg;    die(json_encode($arr,JSON_UNESCAPED_UNICODE));  //cjq}

$_var = var_urlencode($var);
这个函数是在哪里定义的?

$_var = var_urlencode($var);
这个函数是在哪里定义的?



/** * 对变量或者数据进行 urlencode 编码, 使得在进行 json_encode 的时候进行编码的不是中文, 防 止 json_encode 失败 * @access private * @param $var * @return array */ function var_urlencode($var) { if (empty ( $var )) { return false; } if (is_array ( $var )) { foreach ( $var as $k => $v ) { if (is_scalar ( $v )) {//if 用来处理不是数组的情况 $var [$k] = urlencode ( $v ); } else {//else 用来处理数组 $var [$k] = var_urlencode ( $v ); } } } else {//用来处理数组 $var = urlencode ( $var ); } return $var; } 

输出 utf-8 编码的
{"code":"100","msg":"交易密码不能与登录密码一样!"}

应该是其他方面的问题
你在浏览器中查看源文件检查一下

输出 utf-8 编码的
{"code":"100","msg":"交易密码不能与登录密码一样!"}
应该是其他方面的问题
你在浏览器中查看源文件检查一下



页面源代码:
...                   
  • 交易密码
  • 为了您的账户安全,提现需要输入交易密码,请确保与登录密码不同。
  • 设置取消设置
  • 找回密码取消找回
...


当前页面显示的是safeinfo-jiaoyimima.html的内容,
safeinfo-jiaoyimima.html的内容如下:

无标题文档          


怎么改代码都是只弹出了alert("ok1"); 没有弹出alert("ok2"); 郁闷了几天了!请指教,谢谢!

我要你看的是:
模板中的 $.post('{:U("Safeinfo/txpassadd")}', $("#txadd").serialize(), function(data) {
在浏览器源码中是什么?

我要你看的是:
模板中的 $.post('{:U("Safeinfo/txpassadd")}', $("#txadd").serialize(), function(data) {
在浏览器源码中是什么?



我查看当前页面源代码就是楼上的第一段代码,但我不知道怎么在firefox中查看模板中的 $.post('{:U("Safeinfo/txpassadd")}', $("#txadd").serialize(), function(data) { 在浏览器的源码。

百思不得其解,困惑啊!

师者,所以传道、授业、解惑也,谁是我的老师呢?

你为什么要省略在浏览器中看到的代码呢?

$.post('{:U("Safeinfo/txpassadd")}', $("#txadd").serialize(), function(data) { alert("ok");	...},"json");

jquery里指明返回参数类型

你为什么要省略在浏览器中看到的代码呢?



                安全设置 - 桂林金融宝众投借贷平台           


这是全部代码,谢谢!

你这个对吗?
既没有看到 id=txadd 的标记,已没有看到 $.post(.... 代码

你这个对吗?
既没有看到 id=txadd 的标记,已没有看到 $.post(.... 代码



这些代码在 safeinfo-jiaoyimima.html 里,safeinfo-jiaoyimima.html的代码在5楼下半部分。
请注意楼上代码里的这段代码:

既然是在框架里,那你就贴出框架里看到的 html 代码
#5 的只是模板文件,如果是直接使用肯定是不行的

既然是在框架里,那你就贴出框架里看到的 html 代码
#5 的只是模板文件,如果是直接使用肯定是不行的



看到的框架代码是:
无标题文档    

敬爱的@xuzuning 老师,您好,怎么没下文啦?

点击提交,只弹出了alert("ok1"); 没有弹出alert("ok2"); 这到底是为什么呢?

safeinfo-txpassadd.html 代码?

safeinfo-txpassadd.html 代码?



谢谢回复!没有这个文件,只有SafeinfoAction.class.php:
class SafeinfoAction extends BaseAction {    public function _initialize() {        parent::_initialize();        $this->time = $_SESSION['e_time'];        $webData = M('web')->where('id=1')->find();        $this->meta = array(            'title' => '安全设置 - ' . $webData['webtitle'],            'keywords' => '安全设置|' . $webData['webkeyword'],            'description' => strip_tags($webData['new_notice']),        );    }    const EXPIRED_TIME = 120;    //显示安全信息页面    public function index() {        import('@.ORG.String');        $user = M("user_info");        $user1 = M("user");        $auth = M('auth_info');        $list = $user->where("uid=" . $_SESSION["uid"])->find();        $list1 = $user1->where("id=" . $_SESSION["uid"])->find();        $data['uid'] = $_SESSION['uid'];        $data['auth_type'] = 1;        $list2 = $auth->where($data)->find();        $this->AS["user"] = $list;        $this->AS["user1"] = $list1;        $this->AS["user2"] = $list2;        $this->assign($this->AS);        $this->display();    }    //提现密码添加    public function txpassadd() {         $user = M('user');        if (I('txpass') == "" || I('rtxpass') == "") {            tip('100', '请输入完整信息');        }        if (I('txpass') != I('rtxpass')) {            tip("3", '两次输入的密码不一致!');        }        $map['id'] = $this->uid;        $u = $user->where($map)->find();        if (empty($u)) {            tip("100", '未知用户!');        }        $data['u_trade_password'] = I('rtxpass', '', 'fix_pass');        if ($data['u_trade_password'] == $u['u_password']) {            tip("100", '交易密码不能与登录密码一样!');        }        $status = $user->data($data)->where('id=' . $_SESSION['uid'])->save();        if ($status) {            tip("10000", '提交成功!');        } else {            tip("2", '设置失败,请重试!');        }    }

safeinfo-txpassadd.html 经 url 重写后实际执行的是
SafeinfoAction::txpassadd 方法
其中用到 tip 函数,不知你是如何定义的

你那 $.post 方法有 json 声明,所以 tip 函数应输出 json 格式串
而 $.post 的回调函数的参数 data 已被解析成 js 对象了
你再 var data1=eval("("+data+")"); 就有蛇足了,应去掉

你得先把你php代码调试好才行

tip 函数应写成这样

function tip($code, $msg) {    $arr['code'] = iconv('GB2312', 'UTF-8', $code);    $arr['msg'] = iconv('GB2312', 'UTF-8', $msg);         die(json_encode($arr));//    die(var_json_encode($arr));  //cjq}

对于 tip("100", '交易密码不能与登录密码一样!');
得 {"code":"100","msg":"\u4ea4\u6613\u5bc6\u7801\u4e0d\u80fd\u4e0e\u767b\u5f55\u5bc6\u7801\u4e00\u6837\uff01<\/font>"}
如果写成
function tip($code, $msg) {    $arr['code'] = iconv('GB2312', 'UTF-8', $code);    $arr['msg'] = iconv('GB2312', 'UTF-8', $msg);     //    die(json_encode($arr));    die(var_json_encode($arr));  //cjq}

则 tip("100", '交易密码不能与登录密码一样!');
得 {"code":"100","msg":"交易密码不能与登录密码一样!"}
就错了!

tip 函数应写成这样

function tip($code, $msg) {    $arr['code'] = iconv('GB2312', 'UTF-8', $code);    $arr['msg'] = iconv('GB2312', 'UTF-8', $msg);         die(json_encode($arr));}



谢谢!这样子确实有返回了,但是有个问题:
$(".tscg4").html(data.msg);  

中data.msg的值变成浜ゆ
怎么变回:交易密码不能与登录密码一样! 呢?
请继续指教,十分感谢!

没道理呀,这要试试

function tip($code, $msg) {  $arr['code'] = urlencode($code);  $arr['msg'] = urlencode($msg);  $s = json_encode($arr);  die(urldecode($s);}

没道理呀,这要试试

function tip($code, $msg) {  $arr['code'] = urlencode($code);  $arr['msg'] = urlencode($msg);  $s = json_encode($arr);  die(urldecode($s);}



谢谢斑竹老大,试过了,这样子ajax就无法返回了,
点击提交,只弹出了alert("ok1"); 没有弹出alert("ok2");

唉,这ajax的东东搞起来还真难搞!

人气教程排行