2015-07-01 16 views
6

Mam pewne problemy. Najpierw chcę przechowywać moje dane w tablicy kolekcji tablic. a następnie przekazać dane do przesłania kontrolera. Oto mój kodPrzekazywanie tablicy do kontrolera od Ajaxa

Ajax.php

$("#submit").click(function() { 
    var total = 3; 
    var photos = new Array(); 

    for(var i = 0; i < total; i++) 
    { 
    photos[i] = $('#thumbnail'+i+'').children('img').attr('src'); 
    var collection = { 
     'no' : i, 
     'photo' : photos[i] 
    }; 

    } 

    $.ajax({ 
     type: "POST", 
     url: "<?php echo base_url()?>create/submit", 
     data: {collection : collection}, 
     cache: false, 
     success: function(response) 
     { 
      console.log(response); 
      alert('success'); 
      window.location = '<?php echo base_url()?>create/submit'; 

     } 
    }); 

}); 

[EDIT]

Controller

function submit() 

     $collection = $this->input->post('collection'); 

     print_r($collection); 

     if(is_array($collection)) { 
      foreach ($collection as $collect) { 
      echo $collect['no']; 
      echo $collect['photo']; 
      } 
     } 
     else 
     { 
      echo 'collection is not array!'; 
     } 
} 

WYNIK

collection is not array! 

oparciu o rozwiązania Peterka, mam to w moja konsola w konsoli

Array 
(
[0] => Array 
    (
     [no] => 0 
     [photo] => https://scontent.cdninstagram.com/hphotos-xap1/t51.2885-15/s320x320/e15/11176494_1106697872689927_2104362222_n.jpg 
    ) 

[1] => Array 
    (
     [no] => 1 
     [photo] => https://scontent.cdninstagram.com/hphotos-xfa1/t51.2885-15/s320x320/e15/11376044_838742186174876_410162115_n.jpg 
    ) 

[2] => Array 
    (
     [no] => 2 
     [photo] => https://scontent.cdninstagram.com/hphotos-xaf1/t51.2885-15/s320x320/e15/11381470_878168042272606_1132736221_n.jpg 
    ) 

) 

Ale wynik w moim kontroler nie jak oczekiwano.

Odpowiedz

6

Zmienna collection jest lokalny do pętli i nie posiada wszystkie dane iterację. Zamiast spróbować czegoś takiego, chociaż tak naprawdę nie potrzebują obiektu, aby zatrzymać indeks i src - zwykły tablicę 1D zrobi:

$("#submit").click(function() { 
    var total = 3; 
    var photos = new Array(); 
    for(var i = 0; i < total; i++) 
    { 
     var collection = { 
      'no' : i, 
      'photo' : $('#thumbnail'+i+'').children('img').attr('src') 
     }; 
     photos.push(collection); 
    } 
    $.ajax({ 
     type: "POST", 
     url: "<?php echo base_url()?>create/submit", 
     data: {collection : photos}, 
     cache: false, 
     success: function(response) 
     { 
      console.log(response); 
      alert('success'); 
      window.location = '<?php echo base_url()?>create/submit'; 
     } 
    }); 
}); 

Dane wyślesz jest w formie:

photos = [ 
    { 
     "no": 1, 
     "photo":"this is a link" 
    }, 
    { 
     "no": 2, 
     "photo":"this is a link" 
    }, 
    { 
     "no": 3, 
     "photo":"this is a link" 
    } 
] 
+0

Dzięki PeterKa! myślę, że to działa. Ale nadal mam problem, aby uzyskać dane z ajax do kontrolera i pokazać go (w kontrolerze). co muszę zrobić? – dionajie

+1

Co to jest 'print_r ($ collection);' na wyjściu kontrolera? – PeterKA

+0

Nie ma nic :( – dionajie

4

Dodałeś thumbnail jako klasę dla wszystkich <a>. Następnie zmienić kod tak:

$("#submit").click(function() { 
     var total = 3; 
     var photos = new Array(); 
     $('.thumbnail').each(function (i) { 
      photos.push($(this).attr("src")); 
     }); 
     $.ajax({ 
      type: "POST", 
      url: "<?php echo base_url() ?>create/submit", 
      data: {'collection': photos}, 
      cache: false, 
      success: function (response) 
      { 
       console.log(response); 
       alert('success'); 
       window.location = '<?php echo base_url() ?>create/submit'; 

      } 
     }); 

    }); 
+0

Nie rozumiem, co sugerujesz, czy możesz wyjaśnić nieco więcej? –

+0

javascript 'for' = jquery'each ' –

Powiązane problemy