通过 JavaScript 读取拖放有序列表

2023-12-15

我有一个应用程序(使用 Jquery UI.Grid Sort 进行拖放),允许用户上传照片,然后使用拖放按照他们想要的顺序对照片进行排序。

页面加载时,系统会提示用户上传张贴到下一页的照片。当他们到达下一页时,我的 php 脚本创建了一个<ul id="sortable">含有<li>对于他们上传的每个文件。对于他们上传到网站的每张图片,都会有一个新的<li>被建造。里面那个<li> is a <img>设置图片为<li>以及他们上传的图像。

我的目标是在拖放界面中排列图片后能够“保存”图片的顺序。例如,一旦他们按照他们想要的顺序排列和排序图片,我希望能够向他们发送另一个创建 xml 文件的页面(我不需要 XML 方面的帮助,只需要保存order)并使用他们以正确顺序创建的列表。

经过几个小时的修改 PHP,我开始意识到,由于 PHP 是一种服务器端语言,它无法看到渲染后排序的内容。所以我的问题是,有没有办法让 JavaScript 或 Ajax 读取列表的当前顺序,并将其发布到下一页?如果您知道如何操作,能否提供一个页面上的帖子和另一页面上接收的帖子的示例?我对Ajax不是很熟悉。

非常感谢您提供的任何帮助。

示例代码(为每个上传的文件创建 LI 的 foreach 语句的内容)

 $imgID++;


echo '<li class="ui-state-default"><img id="'.$imgID.'"'.' src="user_files/'.$file_name.'" draggable="true" height="90" width="95"></li>';

EDIT

main page :


<script>
$('#my_form').on('submit', function() {
    var ordered_list = [];
    $("#sortable li img").each(function() {
        ordered_list.push($(this).attr('id'));
    });
    $("#ordered_list_data").val(JSON.stringify(ordered_list));
});
</script>
<div id="tesT">
<form id="my_form" action="update_data.php">
    <!-- other fields -->
    <input type="hidden" id="ordered_list_data"></input>
    <input type="submit" value="Proceed to Step 2"></input>
</form>
</div>


update_data.php:

<?php
    // process other fields as normal
    if(isset($_POST['ordered_list_data'])) {
        $img_ordering = json_decode($_POST['ordered_list_data']);
echo "1";
    } else {
       echo "nodata";
    }
    // do things with the data

?>

我建了一个JSFiddle做的事情与大卫发布的基本相同。

我添加了一段将结果写到页面上的 div 中,这样您就可以看到发生了什么:

<input type="button" id="savebutton" value="save"/>
<div id="output"></div>
<form id="listsaveform" method="POST" action="script.php">
    <input type="hidden" name="list" id="hiddenListInput" />
</form>

JavaScript:

$(function() {
$( "#sortable" ).sortable();
$( "#sortable" ).disableSelection();
$( "#savebutton" ).click(function() { LISTOBJ.saveList(); });
});

var LISTOBJ = {
    saveList: function() {
        var listCSV = "";
        $( "#sortable li" ).each(function() {
            if (listCSV === "") {
                listCSV = $(this).text();
            } else {
                listCSV += "," + $(this).text();
            }
        });
        $("#output").text(listCSV);
        $("#hiddenListInput").val(listCSV);
        //$("#listsaveform").submit();
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 JavaScript 读取拖放有序列表 的相关文章

随机推荐

  • C#:ObservableCollection - 为什么是虚拟“CollectionChanged”事件?

    为什么 CollectionChanged 事件是virtual in ObservableCollection 我们有虚拟的OnCollectionChanged方法 这应该足以覆盖事件调用吧 我没有看到这个的任何用途 而且虚拟事件也是邪
  • 的渲染属性和可见属性之间的差异

    我在我的项目中使用 PrimeFaces 3 2 我想知道设置之间有什么区别rendered的属性
  • 为什么当数字的基数等于要排序的数字的数量时,基数排序的运行时间会最小化?

    在 CSLR 第 199 页中 他们指出 引理 8 4 给定 n 个 b 位数字和任何正整数 r 作为理解这一点的一个例子 我遵循以下我认为的 CSLR 推理 并提出问题 我们从 n 个 32 位数字开始 b 32 我们有 n 个数字 可以
  • 使用 Snap SVG 将 SVG 加载到特定 div 中

    使用以下命令将 SVG 文件加载到特定 div 的正确方法是什么SnapSVG 根据文档我有这个 JS var s Snap Snap load fox svg function f s append f select g fox 这会加载
  • Android 从互联网上读取文本文件

    我想读取远程文本文件并在文本视图中显示其内容 我在下面编写了代码 但它没有从文本文件中获取任何信息 我怎样才能找到这个问题的原因或解决它 我的代码没有什么问题吗 private void readFile try String path h
  • 使用 Unix 域套接字的 IPC

    我有两个不同的应用程序 其中一个必须将数据输入另一个应用程序 我使用 Unix 域套接字在它们之间进行通信 客户端挂接到套接字上 检查服务器连接 如果可用则发送数据 服务器等待客户端连接 每当有数据可用时 它就会读取数据并将其写入文件 客户
  • ASP.Net Web 服务 - 有什么方法可以禁用“测试/调用”部分吗?

    我想从我的 Web 服务页面顶部删除 测试 调用 部分 部分原因是 测试 一词可能会让用户在单击它时错误地认为他们没有在生产中执行某些操作 但仍然允许 API 用户使用 HTTPGET POST 知道怎么做吗 尝试在 Web Config
  • 已知问题?:SQL Server 2005 存储过程无法使用参数完成

    具有默认参数的基本 SP ALTER PROCEDURE usp debug fails DATA DT ID AS int 20081130 WITH RECOMPILE AS BEGIN Usage EXEC usp debug fai
  • 在 VB 6.0 中使用 ini 文件

    我一定是傻了 但我似乎找不到如何用 VB 6 0 读取老式的 ini 文件 我似乎能找到的只是关于读取和写入注册表 有人可以把我推向正确的方向吗 请注意 我不是程序员 只是一个业余爱好者 试图用他的计算机获得一些无害的乐趣 所以当你指出明显
  • Struts 2 中支持地图的 Actionform 替代方案

    在Struts 1中 我使用了地图支持的行动形式获取动态字段值 public MyForm extends ActionForm private final Map values new HashMap public void setVal
  • 当在 ControlTemplate 中声明子控件时,如何访问子控件的属性?

    我有一个 GridView 我想在其中嵌入一个复选框到其中一列的标题中 我需要在代码隐藏中检查它的 IsChecked 属性 但是 我无法按名称访问它 因为它位于列标题的模板中 如下所示
  • neo4j 2.0 启动时遇到问题

    我有我的 DB Path String DB PATH path to data graph db 然后我就跑 GraphDatabaseService graphDb new EmbeddedGraphDatabase DB PATH 我
  • 如何向 jQuery 添加函数?

    定义新 jQuery 最简单的方法是什么成员函数 这样我就可以调用类似的东西 id applyMyOwnFunc 请参见 在 jQuery 中定义您自己的函数 by 巴兹尔 戈德曼 在这篇文章中 我想介绍如何 轻松定义您自己的函数 jQue
  • 获取 Windows 资源管理器上拖放文件的文件路径

    拖放这是很多网站上讨论的一个话题 这也是 我也发现了很好的问题 但没有回答这个问题 我有一个listView有一些元素 我需要它们可以放在Windows资源管理器 删除时 我只需要删除这些文件的文件路径 我不需要复制任何内容 只需要路径 类
  • 获取 UI 线程上的延迟

    我正在设置 a 的颜色listview使用以下代码的项目parent getChildAt itemPosition setBackgroundColor Color parseColor FF9494 我正在编写的这段代码OnItemCl
  • SwiftMailer + Gmail - 无法发送电子邮件

    我无法连接 Gmail SMTP 服务器 Look transport Swift SmtpTransport newInstance gt setHost smtp gmail com gt setPort 465 gt setEncry
  • 使用表达式动态评估属性字符串

    如何构建一个能够实现以下目标的表达式 public object Eval object rootObj string propertyString eg Eval person Address ZipCode gt return pers
  • iPhone 应用程序中的 Wi-Fi 强度

    有谁有一些代码可以在 iPhone 应用程序中使用 让我可以看到 wifi 的强度吗 我有一个连接密集型操作 并且希望它们不在不稳定区域 这可能会帮助您走上正确的道路 http blog vladalexa com 2010 07 07 i
  • 链表遍历 **while(thead != NULL)** 和 while(thead->next !=NULL) 的区别

    谁能告诉我有什么区别while 头 NULL and while 头 gt 下一个 NULL 因为为了遍历列表头 NULL不工作时头部 gt 下一个作品 根据我的理解 头节点只是指向起始节点的指针 而不是起始节点本身 如果您有疑问 请参阅此
  • 通过 JavaScript 读取拖放有序列表

    我有一个应用程序 使用 Jquery UI Grid Sort 进行拖放 允许用户上传照片 然后使用拖放按照他们想要的顺序对照片进行排序 页面加载时 系统会提示用户上传张贴到下一页的照片 当他们到达下一页时 我的 php 脚本创建了一个 u