【问题标题】:Ajax X and Y position update not working correctly with Jquery UI draggablesAjax X 和 Y 位置更新无法与 Jquery UI 可拖动对象一起正常工作
【发布时间】:2012-01-30 11:44:35
【问题描述】:

可以在一些帮助下做我有一个简单的 ajax 驱动的便签应用程序(带有 jquery UI 和 PHP)正在开发中,我下面的代码存储 X、Y 用于拖动的项目将其发布到数据库并将结果循环回 div。我已经成功地为文本版本构建了代码(类似于发布注释),但我正在尝试做一个可拖动/可缩放的版本来保存图像。但是当我这样做时,我的位置被存储在数据库中,循环出到#projbaord div,但没有被用来正确定位 HTML 元素(我检查了页面源和样式:显示正确的 x,y 但这是不反映在屏幕上)。

我认为问题一定出在PHP的循环和位置x,y的样式中,但似乎无法理解!有什么想法或其他方法可以达到相同的结果?

我认为这可能是一个位置:相对/绝对问题,但这似乎没问题 - 我现在很难过!希望各位高手能帮忙!

用于处理行为并将值存储在数据库中的 Javascript:

function imageStickyDragXYUpdate(){

    $(".imagesticky").each(function(index){

    var resizethese = $(this).children();

    $(this).draggable({
    cursor: 'move',
    stack: '.imagesticky',
    opacity: '0.5',
    containment: '#projboard',
    scrollspeed: '40',
    scrollSensitivity: '10',
    stop:function(){
        var coord=$(this).position();
        var coordLeft = coord.left;
        var coordTop = coord.top;
        var imageStickyid = $(this).attr('imagestickyid');
        //alert('x='+ coordTop + 'y=' + coordLeft + 'id=' +imageStickyid);

        var datastring = 'xupdateimg='+ coordTop + '&y=' + coordLeft + '&imgstickyid=' +imageStickyid + '&projid=' + proj_id + '&uid=' + uid;
        //alert(datastring);

        $.ajax({
                type: "POST",
                url: "uploaddata.php",
                data: datastring,
                success: function(data){
                            $("#projboardresults").html(data);
                            textStickyDragXYUpdate();//not important other function for working text stickies
                            imageStickyDragXYUpdate();

                            }
                });
    }
    });


           });


}

PHP 显示结果

<?php

$user_id= $_POST['uid'];
$proj_id=$_POST['projid'];//to be validated as int



$get_imgsticky_query = "SELECT * FROM imagesticky WHERE user_id = $user_id AND project_id=$proj_id";

                                $get_imgsticky_result=mysql_query($get_imgsticky_query);
                                while($row=mysql_fetch_assoc($get_imgsticky_result)){
                                $x = $row['imagesticky_x'];
                                $y = $row['imagesticky_y'];
                                $imagesticky_w = $row['imagesticky_w'];
                                $imagesticky_h = $row['imagesticky_h'];
                                $imagesticky_url = $row['imagesticky_url'];
                                $imagesticky_id = $row['imagesticky_id'];

                                echo '<div class="imagesticky" imagestickyid="'.$imagesticky_id.'" style="position: absolute; left:'.$x.'px; top:'.$y.'px;">
                                <a class = "clickaddimage" href="addimage.php"><img src="images/clicktoadd.png" alt="add image" title="Click to add image"</a>
                                <img src="'.$imagesticky_url.'" width="'.$imagesticky_w.'" height="'.$imagesticky_h.'"/>
                                <a href="" class="deleteimagesticky"><img src="images/closey.png" title="delete" alt="delete"/></a>
                                </div>';

                        }


?>

【问题讨论】:

  • 似乎它应该可以正常工作。尝试应用位置:相对;到将包含便签的元素。
  • 感谢回复,尝试过相对没有变化,非常沮丧!哈哈
  • 不幸的是,如果无法直接访问该页面,就无法判断问题出在哪里。休息 30 分钟,喝杯茶,再找问题。

标签: php javascript jquery mysql jquery-ui


【解决方案1】:
    var datastring = 'xupdateimg='+ coordTop + '&y=' + coordLeft + '&imgstickyid=' +imageStickyid + '&projid=' + proj_id + '&uid=' + uid;

这一行是问题所在,我让 X 变量存储 Y 值,而 Y 坐标存储 X 变量!因此,我的代码似乎将项目放置在错误的位置,但实际上运行良好。这就是你成为新父亲并尝试编码所得到的!为什么我昨天没有发现这个?哈哈!

【讨论】:

  • 经验教训总是在尝试查找错误时休息一下!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-21
  • 1970-01-01
  • 1970-01-01
  • 2017-02-16
  • 2011-07-10
  • 1970-01-01
相关资源
最近更新 更多