2015-10-19 38 views
0

我有一個這樣的PHP腳本發送參數的PHP函數:從JavaScript

<?php 
    $menuItemList = getSubPkgCategForDDList(echo "<script>showSubCatForMenuItem();</script>"); 
    if(isset($menuItemList)){ 
     foreach($menuItemList as $u){ 
      ?> 
      <p><span contenteditable="true"><?php echo $u->name ?></span><button type="button" class="btn btn-danger btn-xs" onclick="deleteCategory(<?php echo $u->pkg_cat_ddlist_id ?>)">Delete</button> 
      <button type="button" class="btn btn-success btn-xs" onclick="editCategory(<?php echo $u->pkg_cat_ddlist_id ?>,<?php echo "'".$u->name."'" ?>)">Save</button></p> 
      <?php 
     } 
    } 
?> 

功能getSubPkgCategForDDList必須生成html代碼,所以它依賴從參數,這是發送到這個功能。 我得到這樣的JS-功能showSubCatForMenuItem()這個參數:

function showSubCatForMenuItem(){ 
     console.log($('#menuItem').val()); 
     return $('#menuItem').val(); 
    } 

這個函數從這樣的下拉列表中提取數據:

<select id="menuItem" onchange="showSubCatForMenuItem()"> 
    <?php 
     $itemList = getPackCategoriesForAsideMenu(); 
     if(isset($itemList)){ 
      foreach($itemList as $u){ 
       ?> 
        <option value="<?php echo $u->pkg_cat_ddlist_id ?>"><?php echo $u->name ?></option> 
        <?php 
       } 
      } 
    ?> 
    </select> 

如何做到這一點的參數傳遞是正確的,當我加載頁面並從下拉列表中選擇項目?對不起我的英語不好。

+1

你需要調用下拉更改'ajax'請求發送變量到'php'腳本。 – Mubin

+1

要麼使用AJAX,要麼發送的值與GET相同,POST –

回答

1

在這種情況下,您應該利用$_SESSION。現在打印出下拉:

<select id="menuItem"> 
<?php 
    $itemList = getPackCategoriesForAsideMenu(); 
    if(isset($itemList)){ 
     foreach($itemList as $u){ 
      echo'<option value="'.$u->pkg_cat_ddlist_id.'">'.$u->name.'</option>'; 
     } 
    } 
?> 
</select> 

寫JS腳本:

$("#menuItem").live('change',function(){ 
    var val = $(this).val(); 
    $.post('change.php',{data:val},function(){ 
    // Do some 
    }); 
}); 

,創造change.php名爲php文件:

<?php 
session_start(); 
if(!empty($_POST['data'])){ 
    $_SESSION['menu_sltd'] = (int) $_POST['data']; // It makes sure that the data sent is integer/number 
} 
?> 

現在,改變你的主腳本到:

<?php 
session_start(); 
$menu_sltd = (!empty($_SESSION['menu_sltd']) ? $_SESSION['menu_sltd'] : 'default id'); // Default id is the default menu id if it's blank 
$menuItemList = getSubPkgCategForDDList($_SESSION['menu_sltd']); 
if(isset($menuItemList)){ 
    foreach($menuItemList as $u){ 
     echo' 
     <p> 
      <span contenteditable="true">'.$u->name.'</span> 
      <button type="button" class="btn btn-danger btn-xs" onclick="deleteCategory('.$u->pkg_cat_ddlist_id.')">Delete</button> 
      <button type="button" class="btn btn-success btn-xs" onclick="editCategory('.$u->pkg_cat_ddlist_id.',\''.$u->name.'\')">Save</button> 
     </p>'; 
    } 
} 
?> 

GOOD LUCK ,,很高興幫助你。不要放棄

+0

可能是,我不是PHP的專家,但在我看來,使用SESSION並不是很好的主意。我想了許多時間,終於接受了一種阿賈克斯方法,而不是它。但可能是,你的方法也值得尊重,我不能確定它,因爲雖然我不擅長PHP。我投票並接受你的答案,以便爲你的工作做到最好。謝謝! – pragmus

+0

謝謝,有一天你會知道使用SESSION –

0

javascript功能showSubCatForMenuItem()您可以在每個更改事件的某個隱藏字段中設置所選項目的值,用戶選擇的值將被更新,然後保存使用此值保存在隱藏字段中。