2012-03-08 96 views
1

我自教jQuery和PHP,我遇到一些问题。我需要将元素ID发布到我的PHP脚本中,一旦投放到我的droppable div上。当我拖放一个元素到可放置的div上时,下面的代码不会发布。我已经尝试以下:

  • 我已经删除了一切,除了一个警告框,以检查一个项目已被删除它所做的,所以该项目被视为可丢弃!
  • 我已经手动输入了一些内容到div中以确保可以看到结果
  • 我已经将name替换为var name =“test”,以测试变量内容。

javascript文件和php脚本驻留在同一个目录下,文件名是正确的。 JavaScript的拖放脚本可投放区域

<script type="text/javascript" src="js/drag-drop.js"></script> 

我已经取代PHP脚本以纯文本的结果,看看问题是否是收到的变量之后包括,没有返回。所以这篇文章似乎没有进入php脚本。希望有人能提供一些指针!

下面是我的代码,HTML只是一个div。

$(document).ready(function() { 
    $('#carousel-ul li').draggable({ 
     helper: 'clone', 
     revert: true 
    }); 

    $('#drop').droppable({ 
     hoverClass: 'drophover', 
     accept: '#carousel-ul li', 
     drop: function(){ 
      //alert("has been accepted and dropped"); 
      var name = ui.helper.attr('id').val(); 
      $.post('javascript.php', { name: name }, function(data){ 
       $('#drop-content').html(data); 
      }); 
     }   
    });   
}); 

<?php 
    //echo "id was posted"; 
    if(isset($_POST['name'])){ 
     $name = $_POST['name']; 
     var_dump($name); 
     echo name; 
     //echo "id was posted inside"; 
    } 
?> 
+1

'回声名;'应该是'回声$名称;' - 或者只是一个错字? – 2012-03-08 12:29:00

+0

我猜这个警报实际上在取消注释时正在工作吗?在这种情况下,您的放置事件功能没有任何问题。你有没有检查邮件是否实际发送? (使用Chrome浏览器的Chrome开发人员工具; ctrl + shift + i,结帐“网络”选项卡)。它说什么? – giorgio 2012-03-08 12:29:31

+1

您正在'.attr('id')'后面调用'.val()'。你不应该那样做。 '.val()'是'.attr('value')'的一个简便方法,但是你在一个字符串(id)而不是一个元素上调用它,'.attr('id')'是所有你需要做的,以获得元素的ID。编辑:另外,你应该改变'drop:function()'到'drop:function(event,ui)',就像现在你调用一个未定义的变量(ui)。 – 2012-03-08 12:31:04

回答

0

API documentation为可放开小部件说,ui参数是一个jQuery对象,所以你应该尝试这样的事:

$('#drop').droppable({ 
    hoverClass: 'drophover', 
    accept: '#carousel-ul li', 
    drop: function(event, ui) { 
     var name = $(ui.helper).attr('id'); 
     var content = $(ui.helper).html(); 
     $.post('javascript.php', { name: name, content: content }, function(data) { 
      $('#drop-content').html(data); 
     }); 
    } 
});