JSON

关于JQuery、ajaxReturn、JSon的学习

字号+ 作者:H5之家 来源:H5之家 2015-11-10 10:00 我要评论( )

php php爱好者 phpfans php教程 php入门 php源码 php动态 php基础 php进阶 php模板 php高级 smarty 数据库 mysql linux javascript ajax html css apache c c++

关于JQuery、ajaxReturn、JSon的学习



今天学习用JQuery做一个用户登录的例子,在网站上看了许多学习资料,比如?tid=3312&extra=page%3D1。
    我按他的做法做了一遍以后,出现了许多问题:
    第一,ajaxReturn传递中文的时候,无法传递过去。ajaxReturn(“”,“中文”,0);而在页面的显示格式始终是

{“data”:“”,info:null,status:0}

而当info是英文时则可以顺利的传递过去。

    第二,就是

$.ajax({

type:"post",

url:"__URL__/checkLogin/",

data:'account='+account+'&password='+password+'&verify='+verify ,

dataType:"json",

success:function(msg){

if(msg.status==0)

{

$("#result").html(msg.info).css("color","red");

}else

{

window.location = '__APP__';

}

}

});

里面的msg.status始终是undefined。
      经过了我半天的研究终于有了点眉目:
      关于第一个问题,无法传输中文,是由于你的编码格式不是utf8,所以你把你代码文件的编码格式改为utf8就对了。
      关于第二个问题,涉及到了json的传值方式,


key = {'id':'1','name':'csdn'};
alert(json.id);
alert(json.name);
这是对的

但是如果是传过来的,那么必须eval一下才可以
因为定义的时候写了{}就代表json对象,传过来是一个字符串,虽然也有{}但只是字符并没有构建json对象
所以必须eval一下

就必须用如下的方式试一下。


  • json = eval("(" + key + ")")
  • alert(json.id);
  • alert(json.name);

    复制代码

    所以关于?tid=3312&extra=page%3D1中有一段代码,应该添加下面这一句

  • $.ajax({

  • type:"post",

  • url:"__URL__/checkLogin/",

  • data:'account='+account+'&password='+password+'&verify='+verify ,

  • dataType:"json",

  • success:function(msg){
  • msg = eval("(" + msg + ")");
  • if(msg.status==0)

  • {

  • $("#result").html(msg.info).css("color","red");

  • }else

  • {

  • window.location = '__APP__';

  • }

  • }

  • });

    复制代码

    以上是我的拙见,希望批评指正!!

    昵称: TPZengniao  时间: 2009-10-01 20:58:00

    dataType:"json"还需要msg = eval("(" + msg + ")")?

    你不觉得有问题?

    昵称: kaka  时间: 2009-10-02 11:50:00

    kaka
    恩,我也觉得很奇怪,不过你可以试下!!
    这是我在实践中出现的问题

    昵称: TPZengniao  时间: 2009-10-02 14:25:00

    这个不用试,肯定没问题的,随手写一个简单的

  • class AbcAction extends Action{
  • function index(){
  • $this->display();
  • }

  • function rs(){
  • $this->ajaxReturn('陈浩南','赵山河',1);
  • }
  • }

    复制代码

    模板方面

  • //载入jquery
  • <script>
  • function rs(){
  • $.ajax({
  • type:"post",
  • url:"__URL__/rs/",
  • data:'account=123',//随便写的
  • dataType:"json",
  • success:function(msg){
  • alert(msg.data);
  • }
  • })
  • }
  • </script>
  • <input type="submit" onclick="rs()" value="submit"/>

    复制代码

    昵称: kaka  时间: 2009-10-02 15:12:00

    kaka
    那又有什么意义呢?

    昵称: TPZengniao  时间: 2009-10-04 13:01:00

    理解相当不错,还不够深入呀

    昵称: peroer  时间: 2009-11-23 14:55:00

    我也发现了,必须要 json = eval("(" + key + ")")
    一相,要不所有的返回都是undefined
    但使用JQUER的 $.getJSON
    就没问题!

    昵称: 9254778  时间: 2010-05-11 14:27:00



    在这个例子中,msg包含了3部分信息($this->ajaxReturn('1','2',0);)
    msg.data:就是前面一个变量;
    msg.info:就是第二个提示信息;
    msg.status:就是状态;
    后面两个直接引用就可以,不存在楼主所说的json传值方式。
    而对于第一个传回的变量,实际是传回的一个对象,那么要取得里面的值,例如account,那就:
    msg.data.account
    而不用去eval的。。

    个人理解,不对之处请指点。。

    昵称: hbolive  时间: 2010-05-23 18:16:00

    我也是需要  eval("(" + key + ")") 的加个括号  ,不知道为什么  。不然报错

    昵称: liujun99  时间: 2010-06-09 11:02:00

    只要保证返回的是正确的json串就可以了!

    昵称: Messi  时间: 2010-06-09 13:11:00

    看一下你的TP ajax配置,默认应该就是json返回,不需要eval的。。。

    昵称: hbolive  时间: 2010-06-09 16:12:00

    我也遇到过楼主的情况,不过后来重新写一次又可以直接用了。

    昵称: gzrhappy  时间: 2010-06-09 18:08:00

     

  • 1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章
    • php CI 实战教程:[5]用curl获取json并解析

      php CI 实战教程:[5]用curl获取json并解析

      2016-02-26 17:00

    • 浅谈使用PHP开发微信支付的流程

      浅谈使用PHP开发微信支付的流程

      2016-02-13 15:00

    • php json时间格式转换

      php json时间格式转换

      2016-02-08 11:48

    • json 在线转换php

      json 在线转换php

      2016-02-05 16:00

    网友点评