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

2017-04-10 15:56:35 +08:00
 swuhvxee

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 了,这是什么原因呢?

1082 次点击
所在节点    问与答
7 条回复
Mikewu
2017-04-10 16:11:58 +08:00
你本来就只传给 ajax 有一个参数 biao: "'1','2','3'",将 abc 切割一下吧
var abc = $(this).attr("data").split(",");
ajax(abc[0], abc[1], abc[2]);
chairuosen
2017-04-10 16:13:50 +08:00
1 原因。看 jQuery 文档 attr 返回什么, js 文档函数参数如何传递。
2 解决方案, data-something="[1,2,3]"; var abc = $(this).data('something'); ajax.apply(null,abc) 应该就可以了
otakustay
2017-04-11 13:36:33 +08:00
ajax.apply(null, abc.split(','))
zyzzzz
2017-06-07 20:43:19 +08:00
mark 一下,学习
swuhvxee
2017-06-07 20:47:25 +08:00
第一个和第二个是对的,你可以参考
zyzzzz
2017-06-07 20:47:47 +08:00
明白
zyzzzz
2017-06-07 20:47:55 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/353835

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX