前端代码:
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="http://apps.bdimg.com/libs/bootstrap/3.3.4/css/bootstrap.css">
<script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
</head>
<body>
<div class="row">
<div class="span8">
<ol id="attachment">
<li><a href="123">123+++</a></li>
<li><a href="456">456+++</a></li>
<li><a href="789">789+++</a></li>
</ol>
</div>
</div>
<button class="btn btn-default" type="submit">Button</button>
<script type="text/javascript">
$("button[type='submit']").click(function(){
attachment = [];
$("#attachment li a").each(function(key,value){
attachment[value.text]=value.href;
});
console.log(attachment);
$.ajax({
type : "POST",
url : 'test.php',
data : {'test':attachment},
success:function(data){
console.log(data);
}
});
});
</script>
</body>
</html>
大概意思就是,获取ol.li.a
的超链接内容
获取到之后,想把他加入到一个数组里面,有键值的那种。
我console.log(attachment); 的时候也看到是个数组了,
但是我通过$.ajax传值过去不行了。
后端获取不到post的值。
还是我理解错了,attachment是个对象?搞晕了。
主要是2点:
1,我要把获取超链接的内容和href放到一个数组里面,有键值名的那种例如:a['cn']='ak'
2,传值我看了手册说,如果要传值数组过去,需要加个参数,traditional: true,
我也加了,但是不行,请各位帮帮忙。Ths
请注意 ajax是异步的
attachment应该是个对象吧,键值对那种,至于变成字符串传递,这个jQuery应该都帮你处理好了,不用自己处理吧
attachment = [];
改为 var attachment = {};
即可.
改之后的运行效果图:
test.php
代码如下:
<?php
var_dump($_POST);
JSON.stringify(要发送的数据)
$.ajax({
type : "POST",
url : 'test.php',
dataType : 'json',
data : JSON.stringify({'test':attachment}),
success:function(data){
console.log(data);
}
});