2017-02-17 136 views
0

HAVA PHP數組是這樣的:JSON解析單引號的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" 
     }, 

    } 
} 

和需要發送這個數組來查看像json_encode(),但得到錯誤,如:Uncaught SyntaxError: missing) after argument list

,尋找錯誤的時候把它看起來像這樣enter image description here

我的PHP代碼如下所示:

$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); 

和JS代碼:

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

有沒有必要這樣做。只需將JSON直接回顯到JavaScript代碼中;有效的JSON是有效的JavaScript(儘管相反的情況並非總是如此)。 – Pointy

+1

「$ .parseJSON」部分中的'!!'是什麼? – JustOnUnderMillions

+0

IDK見過這樣的刀片模板和use'd ..因爲簡單不工作.. 如果僅僅加入PHP代碼 得到錯誤像這樣'未捕獲的SyntaxError:意外string' – Scorpioniz

回答

1

只是做

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

沒有必要解析JSON如果是HTML輸出/內容的一部分。

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

成爲

var xyz = [1,2,3];

+0

仍然返回'未捕獲的SyntaxError:意外的字符串',因爲在我的模型名稱中有雙引號'''''不是雙引號'''但是沒有任何空格的單個''和''的2倍 – Scorpioniz

+0

OMG SORRY .. i只需要從JS變量刪除我的引號.. SORRY它正在工作.. !!!! YEAH !! :)) – Scorpioniz

1

據我所知,您可以將使用json_encode()內的JavaScript數組(見php.net)。

只需使用類似下面的PHP:

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

<script type="text/javascript"> 

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

</script> 

這將輸出數組轉換成一個腳本元素。

1

補充@JustOneUnderMillions和@RemcovanOs答案,我做了這個PHPFiddle顯示一個工作示例:

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

代碼:

<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

你的代碼幫助我瞭解@JustOnUnderMillions – Scorpioniz