2015-08-11 4 views
-1

Я пытаюсь опубликовать массив javascript для моей php-функции на той же странице, что и каждый последующий щелчок по каждому добавлению нового номера в массив, а затем вы нажимаете «Удалить» и редактируете базу данных для del = 2; но он говорит, что массив не определен, но я использовал «тревогу», чтобы показать массив действительно имеет значение вПередача массива javascript в php-функцию

Javascript

var numberlist = new Array(); 
function selectImage(div){ 

    var whichDiv = "selectdiv" + div ; 
    var opa = document.getElementById(whichDiv).style.opacity; 
    if(opa == '0'){ 
    document.getElementById(whichDiv).style.opacity = '1'; 
    document.getElementById(whichDiv).style.display = 'block'; 
    numberlist.push(div); 
    alert(numberlist); 
    }else{ 
    document.getElementById(whichDiv).style.opacity = '0'; 
    document.getElementById(whichDiv).style.display = 'none'; 
    var index = numberlist.indexOf(div); 
    if (index > -1) { 
    numberlist.splice(index, 1); 

    alert(numberlist); 
} 
} 
} 

PHP

<?php 
if(isset($_POST['deletephotos'])){ 
$javascriptarray = $_POST['numberlist']; 
$javascriptarray = explode(',', $javascriptarray); 

foreach($javascriptarray as $val) { 

    $result = mysql_query("UPDATE gallery SET del='2' WHERE id='$val'") 
    or die(mysql_error()); 


} 
} 

?> 
+0

Просто возьмите флажковые имена как 'name =" photo_data [] "'. Это передаст все выбранные флажки в виде массива. –

+0

Вы используете ajax? есть где-то форма? Нам не хватает кода? – MazzCris

+0

Я не использую какие-либо формы не только, когда я нажимаю div, у него есть функция onclick. T добавляет выделенный div id в массив, и когда вы нажимаете кнопку submit, в конце запускается функция php, единственная для кнопки отправки - быть отправлен. – user1899614

ответ

0

вы можете создать JSON строковое представление ваш массив и передать его на php, используя ajax

+0

, поэтому используйте var JSONnumberlist = JSON.stringify (numberlist); вместо var numberlist = new Array(); ? – user1899614

+0

да, и передать его на php, вам нужно использовать ajax или вашу форму – elie

+0

, что бы было ajax, извините, что я полностью застрял на этом и не понимаю этого. У меня есть JSON.stringify (numberlist); но что бы код был так, я могу использовать его в моей php-функции вместо $ javascriptarray = $ _POST ['numberlist']; – user1899614

1

Поскольку на вашей странице нет форм, вам не нужно создавать массив с javascript.

Создайте фиктивную (скрытую) форму, которая имеет такое же количество полей, что и div.

Затем используйте javascript для присвоения значений элементам формы, после которых вы теперь отправляете форму с помощью javascript.

атрибут
<div style="visibility:hidden"> 
    <form name="dummy" action="process_pic.php" method="post"> 
    //process_pic.php is the php file that the form values will be passed to. 

Название содержит все цели, значения, присвоенные входные элементы автоматически добавляются к «ПИК []» массив.

<script> 
    var item1 = document.getElementById(pic1); 
    var item2 = document.getElementById(pic2); 
    var item3 = document.getElementById(pic3); 
//If there are no other form elements on the page, you can get elements in an array using: var input = document.getElementsByTagName('input'); 
//Assign values (you can do this in a loop if you have the elements in an array) 
    item1 = 3 
    item2 = 5 
    item3 = 1 

    //Submit form 
    document.dummy.submit(); 
    </script> 

Внутри process_pic.php теперь вы можете работать с массивом, как вы, пожалуйста,

$php_array = array(); 
$php_array = $_POST[pic]; 

Теперь вы можете работать с массивом, как вам угодно.

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