我的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>"}
就错了!