2012-03-08 35 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); 
     }); 
    } 
});