swuhvxee
V2EX  ›  问与答

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

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