• 请不要在回答技术问题时复制粘贴 AI 生成的内容
firhome
V2EX  ›  程序员

当 PHP 头为 json 的时候,jquery 的回调函数会有问题,有人遇到过吗?

  •  
  •   firhome · May 15, 2014 · 3053 views
    This topic created in 4423 days ago, the information mentioned may be changed or developed.
    当php的头为json的时候

    js代码:
    var a = 1;

    $ajax post 那个php接口以后

    回调函数设置 a = 2;

    但是a 还是 1;


    有人知道为什么吗?

    <!doctype html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>test jq ajax</title>
    <script src="jquery.js"></script>
    </head>
    <body>
    <a href="###" id="abc">123</a>
    <a href="###" id="bbb">2</a>
    <script type="text/javascript">
    $(document).ready(function(){
    var a;
    $("#bbb").bind('click',function(){
    $.ajax({
    url:'1.php',
    type:'post',
    data:{},
    success:function(){
    a = {a:1};
    console.log(a);
    alert(1)
    }
    })
    });

    $('#abc').bind('click',function(){
    console.log(a);
    })

    });
    </script>
    </body>
    </html>
    8 replies    2014-05-16 14:21:44 +08:00
    icanfork
        1
    icanfork  
       May 15, 2014
    $.getJSON
    firhome
        2
    firhome  
    OP
       May 15, 2014
    @belin520 为什么呢?和ajax 什么区别
    firhome
        3
    firhome  
    OP
       May 15, 2014
    @firhome 试了,不行
    qiayue
        4
    qiayue  
    PRO
       May 15, 2014
    $.post(
    url,
    {k:v},
    function (){

    },
    'json'
    );
    df
        5
    df  
       May 15, 2014
    上面相关代码替换成:
    success:function(data){
    console.log(data);
    }

    看看服务器返回的数据是否正确先。


    不知道这些是干嘛用的,你没说清楚,好像多余:
    1.
    <a href="###" id="abc">123</a>

    2.
    $('#abc').bind('click',function(){
    console.log(a);
    })
    df
        6
    df  
       May 15, 2014
    <!doctype html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>test jq ajax</title>
    <script src="js/jquery-1.7.2.min.js"></script>
    </head>
    <body>
    <a href="###" id="abc">123</a>
    <a href="###" id="bbb">2</a>
    <script type="text/javascript">
    $(document).ready(function(){
    var a;

    $('#abc').bind('click',function(){
    console.log(a);
    })

    $("#bbb").bind('click',
    function(){
    $.ajax({
    url:'1.php',
    type:'post',
    data:{},
    success:function(data){
    a = data.n; // $json = '{"n":2}';
    console.log(a);
    alert(1);
    }
    })
    });
    });
    </script>
    </body>
    </html>
    123123
        7
    123123  
       May 15, 2014
    只看到了代码里写着 a = {a:1};
    a = 2 在哪里?
    veapon
        8
    veapon  
       May 16, 2014
    是JS变量作用域的问题吧。
    到了success回调的时候,a已经不再ready的上下文范围了。把a的声明放到$(document).ready()外试试。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1661 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 16:20 · PVG 00:20 · LAX 09:20 · JFK 12:20
    ♥ Do have faith in what you're doing.