2015-01-21 4 views
1

У меня есть многомерный массив сеансов в PHP ($_SESSION['playlist']['ID1'], $_SESSION['playlist']['ID2'] ETC) с идентификаторами, хранящимися как значения. В javascript их можно удалить нажатием кнопки, которая передаст значение функции в PHP, чтобы сообщить ей удалить это значение из массива сеанса, сопоставив данный идентификатор и тот, который хранится в массиве. Я не могу заставить это работать. My JS отправляет этот $(wrapper).append("<?php delVid('"+vidID+"');?> ");, но PHP действует как JS, отправляет строку, которая, как я думал, сделает кавычки, но это был единственный способ получить переменную, чтобы правильно перевести ее на PHP. вот моя PHP функцияПередача определенной переменной Javascript в PHP

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

Это можно сделать, используя ** 'ajax' ** –

+0

вы можете предоставить дополнительную базу кода –

+0

PHP - это свободно набираемый язык, поэтому вы отправляете его как строку или int, это не имеет значения, в конце на момент сравнения –

ответ

2

Это не работает так, как вы думаете, что. Добавление HTML с помощью JQuery не запускает ваш 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}); 
    }); 
}); 
+0

I «Конечно, это невероятно простой ответ, и, может быть, я не могу понять это, потому что я слишком много работал над этим, но есть ли обратный звонок или что-то, что может сделать мой сценарий ajax, чтобы я знал, что это сработало? Я добавил все это и не могу ничего показать, потому что я установил сценарий ajax для проверки собственной переменной сеанса, чтобы я мог видеть, что она работает, и она не создает эту переменную. – n1nja

+0

Ты меня на правильном пути, это в конечном итоге. 'jQuery (document) .ready (function ($) { $ (document) .on (" click ",". Remove ", function() { var vidID = $ (this) .parent ('div'). .parent ('div'). attr ('id'); $ (this) .parent ('div'). parent ('div'). fadeOut(); $. ajax ({ url: 'http: //itube247.com/ajax.php ', dataType:' text ', type:' post ', contentType:' application/x-www-form-urlencoded ', данные: {id: vidID} }); }); }); ' – n1nja

+0

@ n1nja вы также можете добавить функцию обратного вызова в качестве параметра $ .ajax, поэтому вы сможете сделать что-то на стороне клиента после выполнения скрипта php – zavg

0

Вы пытаетесь добавить в HTML функцию PHP, которая показывает, что вы не понимали, как работает модель клиент-сервер. PHP - это сценарий на стороне сервера, в то время как JS и HTML - это клиентская сторона: так что вам нужно сделать, это использовать AJAX для отправки запроса на ваш сервер с правильными параметрами. Но прежде всего вам нужно понять, как работают PHP и JS.

Смежные вопросы