当前位置: 代码迷 >> PHP >> die(json_encode(. 没有返回
  详细解决方案

die(json_encode(. 没有返回

热度:189   发布时间:2016-04-28 18:25:20.0
die(json_encode(... 没返回
我的ajax代码

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


php代码:

tip("100", '<font color="red">交易密码不能与登录密码一样!</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
}

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
}


这是为什么呢?
------解决思路----------------------
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", '<font color="red">交易密码不能与登录密码一样!</font>');
得 {"code":"100","msg":"<font color=\"red\">\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", '<font color="red">交易密码不能与登录密码一样!</font>');
得 {"code":"100","msg":"<font color="red">交易密码不能与登录密码一样!</font>"}
就错了!