我希望这个问题很简单,我似乎无法弄清楚解决方案。一直在尝试和谷歌搜索几个小时,让我疯了:)好吧,所以我有一个drag'n'drop +可排序(使用scriptaculous和原型为您的信息)在我的 index.php 。我使用此代码使用以下代码发送div中删除的项目:
<script type="text/javascript">
//<![CDATA[
document.observe('dom:loaded', function() {
var changeEffect;
Sortable.create("selectedSetupTop", {containment: ['listStr', 'selectedSetupTop'], tag:'img', overlap:'vertical', constraint:false, dropOnEmpty: true,
onChange: function(item) {
var list = Sortable.options(item).element;
$('changeNotification').update(Sortable.serialize(list).escapeHTML());
if(changeEffect) changeEffect.cancel();
changeEffect = new Effect.Highlight('changeNotification', {restoreColor:"transparent" });
},
onUpdate: function(list) {
new Ajax.Request("script.php", {
method: "post",
parameters: { data: Sortable.serialize(list), container: list.id }
onLoading: function(){$('activityIndicator').show(), $('activityIndicator2').hide()},
onLoaded: function(){$('activityIndicator').hide(), $('activityIndicator2').show()},
});
}
});
});
// ]]>
</script>
之前我一直在使用此代码,所以我“知道”它会将数据发送到我的 script.php 页面。 selectedSetupTop 是包含元素的div。不要介意通知和 activityIndicator 。我的 script.php 页面目前看起来像这样:
parse_str($_POST['data']);
for ($i = 0; $i < count($selectedSetupTop); $i++) {
$test .= $selectedSetupTop[$i];
}
echo "<script>alert('$test');</script>";
我似乎无法在警报消息中获得任何输出,它只是空白。 script.php 的目的是更新数据库中的一行,它看起来像这样:
$sql = mysql_query("UPDATE table SET row = '$arrayInStringFormat' WHERE id = '1'") or die(mysql_error());
$ arrayInStringFormat 是数组 $ selectedSetupTop 到格式(1,2,3,4)的转换。我想我会用implode或者其他东西解决这个问题,但问题是解析数组 $ selectedSetupTop 。我不是它在页面之间传递,非常感谢帮助!告诉我是否需要进一步解释。
提前致谢!
如果它会有所帮助,我之前使用过此代码,我知道会将数据发送给我并使用它。请注意,我不想像我下面那样做我的任务:
$querySetup = $_GET["s"];
parse_str($_POST['data']);
for ($i = 0; $i < count($selectedSetupTop); $i++) {
$sql = mysql_query("UPDATE " . $querySetup . " SET orderId = $i, hero_selected = 'n' WHERE imageId = $selectedSetupTop[$i]") or die(mysql_error());
}
所以它确实解析了,但我仍然有问题我无法打印它。我想以某种方式破坏阵列。
答案 0 :(得分:0)
不确定AJAX如何在Scriptalicious / Prototype中工作,但您似乎没有从AJAX调用中获取数据。在jQuery中,这将是这样的,你从脚本收到的数据将作为函数的参数返回。
onLoaded: function(msg){
$('activityIndicator').hide(),
$('activityIndicator2').show(),
alert(msg)
}
其次,您无法回显PHP数组,您必须将其编码为JSON:
echo json_encode($test);