【问题标题】:jQuery, need help with 'sortreceive' ajax call and POST varsjQuery,需要有关“sortreceive”ajax 调用和 POST vars 的帮助
【发布时间】:2010-08-06 16:38:20
【问题描述】:

我现在遇到了一个似乎超出了我能力范围的困境!

我有一组使用“biglist”类连接的可排序对象。

我想要做的是绑定 #biglist 的 sortreceive 回调(每当一个列表从另一个列表接收到一个元素时进行)以获取元素的“boxnum”值(表示它来自哪个列表)并执行一个 UPDATE 查询将 id 的 boxnum 值从 5(它来自的列表)更改为 7(它被拖到的列表),以便状态持续存在。

所以交换会像这样(大致)发生

$( "#biglist" ).bind( "sortreceive", function(event, ui) {
  ajax call to boxchange.php
  create vars to represent elements 'boxnum' value and 'box moved to' value     

});

然后在boxchange.php里面->

 $id = $_POST['id']
 $box = $_POST['boxnum']
 ->update query SET boxid to new boxid WHERE id = posted ID of element

我希望这是有道理的。这似乎是让我的程序工作的一种非常巧妙的方法! 非常感谢任何帮助。

EDIT:

刚刚清理了函数以查看是否需要对其进行任何更改(我知道有,因为它看起来很草率)这个函数需要单独复制/更改每个可排序但它' d 至少让程序运行起来!

function ReceiveTwo() 
{
$('#sortable2').bind('sortreceive', function(event, ui) 
                    {
                        boxnum = $(this).attr('boxnum');
                        id = $(this).attr('id');
                       $.ajax
                            ({
                        url: "boxchange.php",
                        type: "POST",
                        data: boxnum, id,
                        success : function(feedback)
                            {
                            $('#data').html(feedback)
                            }

                            })
                    });
                    $('#sortable2').sortable("refresh");
});

【问题讨论】:

  • 不清楚它的哪一部分不适合你,你还说“我有一组使用 class 'biglist' 的连接排序。”但是您使用的是#biglist,如果它是一个类,它应该是.biglist。
  • 我的错,我感觉我会收到类似 mkoryak 的回复。我想知道如何使用 ajax 调用发送两组数据(我在该示例中编写它的方式与语法 afaik 不匹配)我想在调用之前定义 boxnum 和 id 以便我知道要发送什么,然后在我指定请求类型(POST)之后,我需要能够将这两个值发送到我的 php 脚本以更新数据库。这有意义吗?如果不是这样,它只会再次证明我以其他人会理解的方式提出这些类型的问题的可怕把握:)

标签: php javascript jquery mysql jquery-ui-sortable


【解决方案1】:
$('#sortable2').bind('sortreceive', function(event, ui) {
   $.ajax({
     url: "boxchange.php",
     type: "POST",
     beforesend: function(){
        boxnum = $(this).attr('boxnum');
        id = $(this).attr('id');
     },
     data: {'boxnum': boxnum, 'id': id},
     success : function(feedback) {
        $('#data').html(feedback),
     }
   });
});

beforesend 是在 ajax 调用之前触发的事件。我相信在这里你可以设置你的属性来完成你想要的。

【讨论】:

    【解决方案2】:

    我认为您希望将 Javascript 数据发送到服务器端 PHP 脚本的方式是使用 Javascript 关联数组,如下所示:

    $.ajax({
      url: "boxchange.php",
      type: "POST",
      data: {'boxnum': boxnum, 'id': id},
      success: function(data,status) { ... }
    

    您的“boxchange.php”脚本将能够通过 $_POST['boxnum'] 和 $_POST['id'] 访问这些变量。

    我认为这是你的目标,但我不完全确定......

    【讨论】:

    • 非常接近,我需要确保在将 ajax 调用中的“boxnum”作为“boxnum”发送之前正确定义了它。所以 $(this).attr('id') 对于被拖动元素的当前 ID 工作正常 - 但是 $(this).parent.attr('boxnum') 没有获取接收列表的 boxnumber元素。我需要获取该变量,以便将其发送到我的 php 查询以将值更改为该数字:)
    • 这次可以 100% 明确!当涉及到成功功能和反馈时,该程序是“无聊的”。它只是让它没有任何项目显示在他们的列表中......两者都是空的。
    猜你喜欢
    • 1970-01-01
    • 2019-03-07
    • 2011-05-09
    • 1970-01-01
    • 2011-07-02
    • 2020-03-21
    • 1970-01-01
    • 1970-01-01
    • 2015-10-09
    相关资源
    最近更新 更多