2015-07-12 72 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> 

这个固定我的问题,希望这可以帮助别人,将来如果他们遇到同样的问题。