2017-02-17 2 views
0

hava PHP-Array so etwas wie dieses Parsen:json Apostrophe JavaScript

array(1) { 
    [39]=> 
    array(3) { 
     [0]=> 
     array(2) { 
      ["id"]=> 
      int(21) 
      ["name"]=> 
      string(14) "32''LE32HDF3010" 
     }, 
     [1]=> 
     array(2) { 
      ["id"]=> 
      int(22) 
      ["name"]=> 
      string(14) "40''LE40FHDE3010" 
     }, 
     [2]=> 
     array(2) { 
      ["id"]=> 
      int(23) 
      ["name"]=> 
      string(14) "40''40FS4610R" 
     }, 

    } 
} 

und brauchen dieses Array zu senden wie json_encode anzuzeigen(), aber immer Fehler wie: Uncaught SyntaxError: missing) after argument list

und bei der Suche nach Fehler legen sie es wie folgt aussieht enter image description here

meine pHP-Code wie folgt aussieht:

$phone_models = Phone_model::get() -> all(); 

$models = array(); 
foreach($phone_models as $model){ 
    $models[$model -> manufacturer_id][] = array(
     'id' => $model -> id, 
     'name' => $model -> name, 
    ); 
} 

$models = json_encode($models); 

Und JS-Code:

var models = $.parseJSON('{!!$models!!}'); 
+0

Das ist nicht nötig. Echo einfach den JSON direkt in den JavaScript-Code ein; gültiges JSON ist gültiges JavaScript (obwohl die Umkehrung nicht immer wahr ist). – Pointy

+1

Für was sind die '!!' im '$ .parseJSON' Teil? – JustOnUnderMillions

+0

IDK sah wie dieses in Klingen Vorlagen und use'd .., weil einfach nicht funktioniert .. und wenn das Hinzufügen nur PHP-Code immer Fehler wie diese 'Uncaught Syntaxerror: Unerwartete string' – Scorpioniz

Antwort

1

Just do

var models = <?php echo $models?>;

es keine Notwendigkeit gibt, die json zu analysieren, wenn es Teil der HTML-Ausgabe/content ist.

echo "var xyz = ".json_encode([1,2,3]).";";

wird

var xyz = [1,2,3];

+0

noch gibt es 'Uncaught SyntaxError: Unexpected string' zurück, weil in meinem Modellnamen doppelte Anführungszeichen' '' 'nicht doppelte Anführungszeichen' 'aber 2x von single' 'und' 'ohne Leerzeichen – Scorpioniz

+0

OMG SORRY .. i nur benötigt, um meine Zitate von JS-Variable zu entfernen .. SORRY es funktioniert .. !!!! YEAH !! :)) – Scorpioniz

1

Soweit ich weiß, dass Sie das Array innerhalb JavaScript json_encode() mit platzieren können (siehe php.net).

Verwenden Sie einfach so etwas wie die folgenden PHP:

<?php 
$array = ('foo', 'bar', array('foo', 'bar')) 
?> 

<script type="text/javascript"> 

var array = <?php echo json_encode($array); ?> 

</script> 

Dies druckt das Array in einem Script-Element.

1

Ergänzung @JustOneUnderMillions und @RemcovanOs Antworten, ich diesen PHPFiddle gemacht, die ein Arbeitsbeispiel zeigt:

http://phpfiddle.org/main/code/sm1x-zu6d

Code:

<script> 
    var json = 
<?php 
class Model { 
    function __construct($mi, $id, $name) { 
     $this->manufacturer_id = $mi; 
     $this->id = $id; 
     $this->name = $name;  
    } 
    public $manufacturer_id; 
    public $id; 
    public $name; 
} 

$pmodels = array(new Model(39, 21, "32''LE32HDF3010"), new Model(39, 22, "40''LE40FHDE3010"), new Model(39, 21, "40''40FS4610R")); 
$models = array(); 

foreach($pmodels as $model){ 
    $models[$model -> manufacturer_id][] = array(
     'id' => $model -> id, 
     'name' => $model -> name, 
    ); 
} 

$models = json_encode($models); 


echo $models;   
?>; 
    console.log(json); 
</script> 
+1

Ihr Code half mir zu verstehen, was von @JustOnUnderMillions vorgeschlagen wurde – Scorpioniz

Verwandte Themen