V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
swuhvxee
V2EX  ›  问与答

新手问一个字符串当作另一个函数参数的问题

  •  
  •   swuhvxee · Apr 10, 2017 · 1670 views
    This topic created in 3304 days ago, the information mentioned may be changed or developed.

    html:

    <button data="'1','2','3'"><button>
    

    js:

    $("button").click(function(){
       var abc = $(this).attr("data");
       ajax(abc);
    });
    
    function ajax(biao,class,id){
       $.ajax({
          type: "post",
          url: url,
          data:{'biao':biao, 'class':class, 'id':id}
          dataType: "html",
          success: function ()
          {
            alert("成功");
          }
       });
    }
    

    ajax 出现了问题,在 chrome 中观察请求头正常情况下应该是:

    biao :'1'
    class:'2'
    id:'3'
    

    但是现在出现如下这个现象

    biao:'1','2','3'
    

    也就是说, data 的数据全部给了 biao 了,这是什么原因呢?

    7 replies    2017-06-07 20:47:55 +08:00
    Mikewu
        1
    Mikewu  
       Apr 10, 2017   ❤️ 1
    你本来就只传给 ajax 有一个参数 biao: "'1','2','3'",将 abc 切割一下吧
    var abc = $(this).attr("data").split(",");
    ajax(abc[0], abc[1], abc[2]);
    chairuosen
        2
    chairuosen  
       Apr 10, 2017
    1 原因。看 jQuery 文档 attr 返回什么, js 文档函数参数如何传递。
    2 解决方案, data-something="[1,2,3]"; var abc = $(this).data('something'); ajax.apply(null,abc) 应该就可以了
    otakustay
        3
    otakustay  
       Apr 11, 2017
    ajax.apply(null, abc.split(','))
    zyzzzz
        4
    zyzzzz  
       Jun 7, 2017
    mark 一下,学习
    swuhvxee
        5
    swuhvxee  
    OP
       Jun 7, 2017
    第一个和第二个是对的,你可以参考
    zyzzzz
        6
    zyzzzz  
       Jun 7, 2017
    明白
    zyzzzz
        7
    zyzzzz  
       Jun 7, 2017
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3000 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 15:12 · PVG 23:12 · LAX 08:12 · JFK 11:12
    ♥ Do have faith in what you're doing.