2012-01-11 17 views
43

Poszukuję lepszego rozwiązania do wykonywania wywołania AJAX za pomocą jQuery, po zwróceniu przez PHP pliku tablicy i po stronie klienta jako tablicy JavaScript. Oto co ja robię tak:Jak zwrócić tablicę z połączenia AJAX?

PHP File (Example.php):

<?php 
    $id_numbers = array('NES-ZL','NES-AL','SNS-ZL'); 

    for ($i=0; $i<count($the_array); $i++){ 
     echo $id_numbers[$i]; 
     echo '|'; 
    } 
?> 

JS pliku:

id_numbers = new Array(); 
$.ajax({ 
    url:"Example.php", 
    type:"POST", 
    success:function(msg){ 
     id_numbers = msg.split('|'); 
    } 
}); 

Moja obecna metoda jest tylko trochę zbyt zawiłe jak na mój gust .

Co chciałbym zrobić, to aby móc po prostu

return $id_numbers; 

po stronie PHP i bezpośrednio przełożyć je do tablicy javascript po wywołania AJAX.

Pomysły, ktoś?

+2

Y U NIE UŻYWAJ JSON? – jAndy

Odpowiedz

98

Użyj JSON do przesyłania typów danych (tablic i obiektów) między klientem a serwerem.

W PHP:

w JavaScript:

PHP:

echo json_encode($id_numbers); 

JavaScript:

id_numbers = JSON.parse(msg); 

Jak wspomniano Wolfgang, można dać czwarty parametr jQuery do automatycznego dekodowania JSON dla Ciebie.

id_numbers = new Array(); 
$.ajax({ 
    url:"Example.php", 
    type:"POST", 
    success:function(msg){ 
     id_numbers = msg; 
    }, 
    dataType:"json" 
}); 
+0

Niewiarygodnie pomocna! Z pewnością sprawi, że wszystko będzie prostsze i ładniejsze. –

+1

@k_sel to prawie standard branżowy. Wszyscy używają tego dla AJAX. Zauważysz, że JSON to także poprawny JavaScript. –

+1

Nie zapomnij użyć 'async: false' – Yuri

9

Spójrz na json_encode() w PHP. Możesz uzyskać $ .ajax, aby rozpoznać to za pomocą parametru dataType: "json".

0

Wystarczy popatrzeć na json_encode (http://php.net/manual/en/function.json-encode.php). Jest dostępny od PHP 5.2. Użyj parametru dataType: 'json', aby go przeanalizować. Najpierw będziesz miał obiekt jako pierwszy argument sukcesu. Aby uzyskać więcej informacji zajrzyj na jQuery dokumentacji: http://api.jquery.com/jQuery.ajax/

0

PHP ma super sexy funkcję to, po prostu przekazać tablicę do niego:

$json = json_encode($var); 

$.ajax({ 
url:"Example.php", 
type:"POST", 
dataType : "json", 
success:function(msg){ 
    console.info(msg); 
} 
}); 

simples :)

1

@ Xeon06, miło, ale jak fyi dla tych, którzy czytają ten wątek i próbowali jak ja ... przy zwracaniu tablicy z php =>json_encode($theArray). konwertuje na ciąg, który dla mnie nie jest łatwy do manipulowania esp dla użytkowników soft js takich jak ja.

Wewnątrz js, próbujesz uzyskać lepsze wartości tablicowe i/lub klucze tablicy lepiej używając JSON.parse jak w var jsArray = JSON.parse(data) gdzie dane zwracają tablicę z php. zakodowany łańcuch json jest konwertowany na obiekt js, który można teraz łatwo manipulować.

np. foo = {jeden: 1, dwa: 2, trzy: 3} - dostał po JSON.parse

for (key in foo){ console.log("foo["+ key +"]="+ foo[key]) } - wydruki na konsolę firebug. voila!

+0

Co dziwne, jeśli pracujesz z wielowymiarowymi tablicami, spróbuj i' json_encode' wewnętrznych tablic, a więc '$ parent_array = array (json_encode ($ child_array)); '. Działało w moim przypadku. –

Powiązane problemy