将特定的Javascript变量传递给PHP

时间:2015-01-21 07:28:50

标签: javascript php jquery

我在PHP中有一个多维会话数组($_SESSION['playlist']['ID1']$_SESSION['playlist']['ID2'] ETC),ID存储为值。在javascript中,可以通过按下按钮删除这些按钮,该按钮将值传递给PHP中的函数,以告诉它通过匹配给定的ID和存储在数组中的ID来从会话数组中删除该值。我无法让这个工作。 我的JS正在发送这个$(wrapper).append("<?php delVid('"+vidID+"');?> ");,但PHP就像JS一样发送一个字符串,我认为引号会使它无论如何都会这样做,但这是我能让变量正确转移到PHP的唯一方法。 这是我的PHP功能

function delVid($id){
    foreach( $_SESSION['playlist'] as $key => $value ) {
            if($id == $value){
                unset( $_SESSION['playlist'][ $key ] );
            }
        sort($_SESSION['playlist'], SORT_NUMERIC);
    }
}

2 个答案:

答案 0 :(得分:2)

它不像你想象的那样工作。使用JQuery附加HTML不会运行服务器端PHP脚本。所以它只是一个附加到wrapper的字符串,从代码执行的角度来看没有任何意义。

要制作您想要做的事情,您需要使用Ajax技术,该技术包括将数据传递到服务器而无需重新加载页面。因此,您需要创建一个服务器端页面,该页面将接受您的$id参数并调用您的delVid函数。

// ajaxScript.php (pseudo code)
// I don't know what framework and routing scheme are you using,
// so just a raw code to show an idea

<?php       

function delVid($id) {
    foreach($_SESSION['playlist'] as $key => $value) {
        if($id == $value) {
            unset($_SESSION['playlist'][$key]);
        }
        sort($_SESSION['playlist'], SORT_NUMERIC);
    }
}

delVid($_POST['id']);

然后你需要编写JS代码,它将在某个事件上对该页面执行Ajax请求。 JQuery有$.ajax$.get$.post这样有用的方法来实现它。

jQuery(document).ready(function($){ 
  $(document).on("click",".remove", function(){ 
    var vidID = $(this).parent('div').parent('div').attr('id');             
    $(this).parent('div').parent('div').fadeOut();
    $.post('/ajaxScript.php', {id:vidId});
  }); 
});

答案 1 :(得分:0)

您正在尝试向HTML附加一个PHP函数,这表明您无法理解客户端 - 服务器模型的工作原理。 PHP是服务器端脚本,而JS和HTML是客户端:所以你要做的就是使用AJAX用适当的参数向服务器发送请求。但首先,您必须了解PHP和JS的工作原理。