2015-07-12 117 views
0

我正在創建一個「拖放」訂購列表,我爲現有的代碼抓取了一些代碼,我需要修改它以適合我的需要。但是,我並不完全理解代碼的正確操作。從php變量jQuery post

基本上我有一個php變量'$ draft_id',我需要傳入我的updateList.php。如果我只是內updateList.php它工作正常定義$draft_id=0,但我需要能夠在通過這個值

代碼如下:

(的index.php)

<script type="text/javascript"> 
$(document).ready(function(){ 
function slideout(){ 
    setTimeout(function(){ 
     $("#response").slideUp("slow", function() {}); 
    }, 2000);} 
    $("#response").hide(); 
    $(function() { 
     $("#list ul").sortable({ opacity: 0.8, cursor: 'move', update:function() { 
      var order = $(this).sortable("serialize") + '&update=update'; 
      $.post("updateList.php", order, function(theResponse){ 
       $("#response").html(theResponse); 
       $("#response").slideDown('slow'); 
       slideout(); 
      }); 
     } 
    }); 
    }); 
}); 
</script> 

... 

<?php 
include("connect.php"); 
$draft_id='0'; 
$query = "SELECT id, text FROM sort WHERE draft_id =" . $draft_id . " ORDER BY listorder ASC"; 
$result = mysql_query($query); 
while($row = mysql_fetch_array($result, MYSQL_ASSOC)) 
{ 
    $id = stripslashes($row['id']); 
    $text = stripslashes($row['text']); 
    echo "<li id='arrayorder_" . $id . "'>" . $text; 
    echo "<div class='clear'></div>"; 
    echo "</li>"; 
} 
?> 

(updateList .PHP)

<?php 
include("connect.php"); 
$array = $_POST['arrayorder']; 
if ($_POST['update'] == "update"){ 
    $count = 1; 
     //------------------------------------ 
     $draft_id=$_POST['draft_id']; 
     //------------------------------------ 
     foreach ($array as $idval) { 
     $query = "UPDATE sort SET listorder = " . $count . " WHERE id = " . $idval . " AND draft_id=" . $draft_id; 
     mysql_query($query) or die('Error, insert query failed'); 
     $count ++; 
    } 
    echo 'Draft Order Saved!'; 
    } 
?> 

所以基本上是「updateList.php」我想「draft_id」從$ _POST數組拍攝,但我不知道如何正確地傳遞。任何幫助,將不勝感激。

回答

0

經過一番研究,我發現如何通過這個方法來傳遞它,所以我想我會分享以防其他人在將來需要它。所以我的主要問題是我不明白如何設置$ _POST數組。

在Javascript中,有一個$ .post使用了一個變量'order',它在上面定義。這是傳遞$ _POST數組的地方。所以通過添加一個附加條件,你可以在$ _POST數組中傳遞額外的變量。

因此,我改變:

<script type="text/javascript"> 
$(document).ready(function(){ 
function slideout(){ 
    setTimeout(function(){ 
    $("#response").slideUp("slow", function() {}); 
}, 2000);} 
$("#response").hide(); 
$(function() { 
    $("#list ul").sortable({ opacity: 0.8, cursor: 'move', update:function() { 
     var order = $(this).sortable("serialize") + '&update=update'; 
     $.post("updateList.php", order, function(theResponse){ 
      $("#response").html(theResponse); 
      $("#response").slideDown('slow'); 
      slideout(); 
     }); 
    } 
    }); 
    }); 
}); 
</script> 

到:

<?php //this will later be pulled from another page, but for now 
$draft_id='0'; //I just set it up for testing purposes. 
$_POST['draft_id']=$draft_id; 
?> 
<script type="text/javascript"> 
$(document).ready(function(){ 
function slideout(){ 
    setTimeout(function(){ 
    $("#response").slideUp("slow", function() {}); 
}, 2000);} 
$("#response").hide(); 
$(function() { 
    $("#list ul").sortable({ opacity: 0.8, cursor: 'move', update:function() { 

    //we will add &draft_id='the php variable $draft_id to the order variable' 

     var order = $(this).sortable("serialize") + '&update=update' + '&draft_id=<?php echo $draft_id; ?>'; 
     $.post("updateList.php", order, function(theResponse){ 
      $("#response").html(theResponse); 
      $("#response").slideDown('slow'); 
      slideout(); 
     }); 
    } 
    }); 
    }); 
}); 
</script> 

這個固定我的問題,希望這可以幫助別人,將來如果他們遇到同樣的問題。