2013-08-05 4 views
2

У меня возникли проблемы с передачей javascript-массивов и других переменных на мой php-контроллер. Я делаю это в codeigniter. Я назначил некоторые значения на JavaScript, как это:Как сохранить переменную javascript в переменные сеанса php?

var count = ($('#listOfProducts tr').length); 
//loop start 
var i=0; 
grid=$('#listOfProducts input[type="checkbox"]:checked').each(function(){ 
    var $row = $(this).parents('tr'); 
    var $trid =$(this).closest('tr').attr('id'); 
    rowid[i]=$trid; 
     rowfields.push({itemname: $row.find('td:eq(0)').text(), productname:$row.find('td:eq(1)').text(), productdesc: $row.find('td:eq(2)').text(), unitprice:$row.find('td:eq(3)').text(), quantity:$row.find('td:eq(5) input').val(), amount:$row.find('td:eq(6) input').val()}); 
    i++; 
}); 

я должен передать его в мой контроллер, чтобы я мог сохранить значения в мою базу данных ... Любая помощь? Я думаю, что хранить этот массив в качестве переменной сеанса, но я не знаю, как, учитывая проблемы на стороне клиента и на стороне сервера.

+0

Просто отправьте его через AJAX. – Pitchinnate

ответ

2

Я использую CI и лучший способ я нашел, чтобы отправить его через AJAX, как это:..

$('.your-element').click(function(e){ 
    var id = 1; 
    $.ajax({ 
     url: base_url()+'yourController/youFunction/'+id, 
     type: 'get', 
     dataType: 'html', 
     success: function(html) { 
      //YOUR ACTION 
     } 
    }); 

}); 

Сообщите нам, если вам нужно re спецификация. NOTE: This method creates problems if you have sessions data going on as every ajax call changes the session id or doubles the time of the session_update. Чтобы справиться с этим видеть этот пост: HANDLING CODEIGNITER SESSION/AJAX PROBLEMS

Edit:

Для base_url() в JS Я написал это в файле index.php:

<script> 
function base_url(){ 
    var url = '<?= base_url() ?>'; 
    return url; 
} 
</script> 

массива Edit

Для массива ajax-call Я бы сделал это с помощью jQuery $.post(), например:

$('.your-element').click(function(e){ 
    e.preventDefault(); 
    var demoArray = ['1', '3', '7']; 
    $.post(base_url()+'admin/test/', {array_send:demoArray}, function(result){ 
     alert(result); 
    }); 
}); 

Если контроллер admin/test является:

public function test(){ 
    print_r($_POST['array_send']); 
} 
+0

Sir @ Mr.Web, предполагая, что я передаю массив «tablefield», как я могу получить значения в моем контроллере? –

+0

@ Umpong_1947676: Смотрите мое редактирование. Лучший. –

+0

печать работает, однако, когда я пытаюсь сохранить значения переменной, она терпит неудачу ... –

1

Есть на самом деле всего лишь несколько вариантов для передачи информации из JavaScript (или браузер, который) в PHP:

  1. Используя запрос Ajax. Это может быть как GET или запрос POST (переменные в PHP, проживающих в массиве $_GET или $_POST соответственно
  2. Используя форму:. Добавить данные, которые вы хотите отправить в олдскул форме HTML и разместить его
  3. По магии : положить зубную щетку на голове, повернуть вокруг 7 раз и бормотать какие-то несуществующие слова это может помочь
Смежные вопросы