2012-06-13 1 views
0

Я создаю массив в javascript, используя JSON.stringify() на нем, а затем устанавливая атрибут значения скрытого ввода в результирующую строку.

function setSelectedArray(){ 

     var ticketInfo = new Array(); //creates new array for later 
     var num=0;      //num accumulates the number of the next row 
     for(var i=0;i<hlRows.length;i++){ 
      if(hlRows[i]){ //hlRows is an array with boolean values telling me 
          //which dataArray values to set ticketInfo to 
       ticketInfo[num] = dataArray[i]; 
       //dataArray is a pre-defined array and contains a large amount of data 
       //ticketInfo is a smaller array that is gathering all data specified from hlRows 
       num++; 
      } 
     } 
     //line below sets 'tix'(hidden input field).value to the JSON version of ticketInfo 
     document.getElementsByName('tix').value = (JSON.stringify(ticketInfo)); 

     //At this point, my alert below displays everything I want to see. 
     //It looks like correct JSON to me 
     alert("The VALUE of 'tix' is: "+document.getElementsByName('tix').value); 

     //this submits the form that the hidden field is inside of. 
     //it wouldn't go to the next page(which it does) without 
     //this calling the form's action attribute correctly (i think..) 
     document.forms["hiddenForm"].submit(); 
    } 

Вы можете прочитать мои комментарии, если вам нужно больше описания. Вот HTML часть процесса:

<!-- This button, when clicked, calls the setSelectedArray() function --> 
<input class="button" type="button" id="btnContact" value="Select Tickets" onclick="setSelectedArray()" style="width:20em;float:right;"/> 

<form id="hiddenForm" action="email.php" method="post"> 
    <input type="hidden" name="tix" value=""/> <!-- I tried this with no value specified too --> 
</form> 

Я не знаю, как много разных вещей, которые я пытался в email.php, чтобы просто получить какой-либо продукции. Я пробовал эхо, печатать и печатать_r и печатать из циклов и печатать значения внутри «массива», но ничего не работало. Вот где email.php находится прямо сейчас:

Единственный выход я получаю от email.php является «NULL» (что это было не 2 секунды раньше, в боевой готовности) или «Array». В противном случае, он ничего не говорит, и я просто получаю пустой экран. Что я здесь делаю неправильно? Нужно ли использовать AJAX для публикации данных? Я чувствую, что это неправильно.

+0

Предложение: поместите отладочный запрос на «phpinfo()» в ваш email.php и посмотрите, что отправлено. – paulsm4

+0

Попробуйте использовать атрибут ID в скрытом поле. '' – JConstantine

+1

Закомментировать представление формы и использовать инструменты вашего браузера для проверки скрытого элемента, чтобы узнать, изменилось ли его значение. – Lizard

ответ

5

Проблема заключается в том, что getElementsByName возвращает массив элементов.

document.getElementsByName('tix')[0].value = (JSON.stringify(ticketInfo)); 

alert("The VALUE of 'tix' is: "+document.getElementsByName('tix')[0].value); 
+1

Я предлагаю использовать getElementById, когда это возможно. – transilvlad

+0

Сначала я попытался использовать getElementById, и произошло то же самое. НО я просто попробовал это снова, и теперь это позволяет мне передавать данные. Я получаю его на странице PHP сейчас. – cNovak

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