我通过AJAX将一些序列化数据发送到PHP脚本:
HTML:
<table class="mytable">
<tbody>
<tr id="item_01">
<td>content</td>
</tr>
<tr id="item_02">
<td>content</td>
</tr>
<tr id="item_03">
<td>content</td>
</tr>
<tr id="item_04">
<td>content</td>
</tr>
<tr id="item_05">
<td>content</td>
</tr>
</tbody>
</table>
JS:
$( '.mytable tbody' ).sortable({
update: function() {
items = $( this ).sortable( 'serialize' );
$.ajax({
url: 'ajax.php',
type: 'post',
data: { action: 'foo', items }
cache: false,
error: function() {
console.log( 'Error' );
}
});
}
});
PHP:
$action = $_POST['action'];
if ($action == 'foo') {
$items = $_POST['items'];
for ( $i = 0; $i < count($items); $i++ ) {
.....
}
}
我的印象是,人们可以在没有任何转化的情况下遍历$_POST['items']
var,但我会获得序列化数据:
item[]=val_1&item[]=val_2&item[]=val_3& ... &item[]=val_n
我如何循环使用?
提前致谢
答案 0 :(得分:1)
所以问题在于你在ajax调用中发布项目的方式:&#34;序列化&#34;函数返回字符串而不是对象。因此,您希望继续将字符串数据添加到字符串中,如下所示:
...
data: 'action=foo&' + items // items is a string of the form "item[]=content&item[]=content..."
...
希望这有帮助!
答案 1 :(得分:1)
检查一下,并在链接中向我们提供解决方案所需的具体解决方案:
How do I PHP-unserialize a jQuery-serialized form?
我已在c9.io上进行了代码预览,但它运行正常。尝试使用类似的代码创建外部ajax.php:
<?php
$action = $_POST['action'];
if ($action == 'foo') {
$items = $_POST['items'];
parse_str($_POST['items'], $params);
var_dump($params);
}
?>
制作类似的东西:
$(document).ready(function(){
var items = $('.mytable tbody').sortable();
items = items.sortable('serialize');
var ajaxRequest = function(){
$.ajax({
url: 'ajax.php',
type: 'post',
data: {
action: 'foo',
items
},
cache: false,
complete: function(data){
console.log(data)
},
error: function() {
console.log('Error');
}
});
};
setInterval(function(){
ajaxRequest();
}, 2000);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
<table class="mytable">
<tbody>
<tr id="item_01">
<td>content</td>
</tr>
<tr id="item_02">
<td>content</td>
</tr>
<tr id="item_03">
<td>content</td>
</tr>
<tr id="item_04">
<td>content</td>
</tr>
<tr id="item_05">
<td>content</td>
</tr>
</tbody>
</table>
&#13;
检查您的控制台和浏览器请求时间线,您将看到一些未命名的键[0..n],其中包含您的脚本返回的值。
检查此链接以获取有关如何使用此值的说明: