【发布时间】:2016-12-08 18:39:05
【问题描述】:
我正在运行 JQUERY SORTABLE -- 然后序列化结果 --- 然后使用 AJAX 将序列化数组发布到 php 数据库更新脚本。
一切正常。但是,我希望将 AJAX 调用(如下面的脚本所示)设置为仅运行一次 --- 即当所有 SORTABLE 排序完成时,因此我有一个最终的序列化数组。
序列化和 ajax 脚本如下 - 但每次更新序列化数组时发布,而不是在最终数组准备好时发布。任何想法都会非常受欢迎。 (将考虑如何最好地实现 HTML BUTTON 以手动实现此条件)。
<script>
$('ul').sortable({
update: function (event, ui)
{
var order = $(this).sortable('serialize');
$('span').text(order);//test serialize without ajax-works fine
//ajax curently runs each time a sort operation is serialised.
//I want to run AJAX when I have finished sorting hence serialization.
$.ajax({
url: 'update_gallery_grid.php?propertyid='+ propertyid +'&product='+ product +'&payment='+payment,//url data needs to be GOT on the pageAJAX pots too
type: 'post',
data: order,
success:function(result){
$(".result").html(order);}, //works but gives serialised array each time serialisation is updated by sortable. No conditionality.
error: function(){
alert('something bad happened');
}
}); // end ajax call
}
});
</script>
编辑 除了 Twisty 的想法,我还提出了这个编辑。但是它现在根本没有发布 Ajax - 所以我在移动发布的原始代码(确实发布了)和这个新编辑时犯了一个错误。我在这里做了什么傻事吗?
<script>
$(function() {
$('#saveBtn').button().click(function(e) {
e.preventDefault();
//ajax is not posting on Save. It was posting to php with initial code in question. So Ive messed something up here?
$.ajax({
url: 'update_gallery_grid.php?propertyid='+ propertyid +'&product='+ product +'&payment='+payment,//url data needs to be GOT on the pageAJAX pots too
type: 'post',
data: data,
success:function(result){
$(".result").html(data);},
error: function(xhr, desc, err) {
console.log(xhr);
console.log("Details: " + desc + "\nError:" + err);
}
}); // end ajax call
}); //end click
//following sorts and reports array to $(span) ok
$('#sortable').sortable({
//placeholder: "ui-state-highlight",
update: function(event, ui) {
var data = $(this).sortable('serialize');
$('span').text(data);
}
});
$("#sortable").disableSelection();
});//end function
</script>
编辑 2 Twisty-我已经移动了 var 数据声明,如下所示。效果是 sortable 不是排序并且保存不会在结果 div 中产生任何内容。
$('#sortable').sortable({
//placeholder: "ui-state-highlight",
update: function(event, ui) {
//var data = $(this).sortable('serialize');
$('span').text(data);
}
});
$("#sortable").disableSelection();
var data = $('#sortable').sortable('serialize');
});//end function
这是输出字符串,排序现在不会像之前编辑时那样改变它(尽管没有发布)。保存时仍然没有任何结果(没有 Firebug post200 列表)。
Query string: item[]=1&item[]=2&item[]=3&item[]=4&item[]=5&item[]=6&item[]=7&item[]=8&item[]=9&item[]=10 Result:
【问题讨论】:
-
您在答案中搜索的内容有点不清楚。你试过什么?
-
说实话我有点难过。所以我正在寻找关于如何做到这一点的好主意。我不敢相信这不是一个常见的问题,但我在谷歌上找不到任何可以解决的问题。因此,我对社区的任何想法持开放态度。
-
如何知道用户何时完成排序?
-
可能是用户交互 Kevin。也许是一个按钮。或者最多可能有十个排序更改(但这有点复杂)。真的在寻找想法。这一定是一个很常见的问题。很惊讶我找不到正面解决它的帖子。每次排序部分更改时发布确实会弄乱更新程序逻辑
标签: javascript jquery html ajax jquery-ui