JSON.parse在参数列表'

时间:2018-02-21 09:08:21

标签: javascript php json

我想将php数组传递给js。为此,我在js JSON.parse()中使用了json_encode。

现在问题是,JSON.parse在参数列表'之后输出了一个异常'。我猜它的数字是撇号(number_format> CHF)。

剪辑:

<script>
(function($) {
    var prices = JSON.parse('<?= $this->prices_json; ?>'); ...

...&#34; offsetdruck_4f&#34;:{&#34; 1s&#34;:&#34; 583.82&#34;,&#34; 2s&#34;:&#34; 1&# 39; 090.09&#34;} ...

  1. 有单引号要转义吗?如果是这样,最好怎么做?
  2. 是json_encode然后在js JSON.parse中将php-Array传递给js(在模板中)的最佳实践?如果没有,最好怎么做?

3 个答案:

答案 0 :(得分:1)

  

有单引号要转义吗?

用单引号分隔的JavaScript字符串文字中的单引号必须进行转义。

......这就是你所拥有的:<ScrollView android:layout_width="match_parent" android:layout_height="wrap_content"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="130dp" android:layout_marginTop="2dp" android:orientation="horizontal" android:weightSum="10"> <LinearLayout android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="4.9"> <Button android:id="@+id/underwaterpark" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/ic_launcher_background" /> </LinearLayout> <LinearLayout android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="0.2"></LinearLayout> <LinearLayout android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="4.9"> <Button android:id="@+id/aquadam" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/ic_launcher_background" /> </LinearLayout> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="130dp" android:layout_marginTop="3dp" android:orientation="horizontal" android:weightSum="10"> <LinearLayout android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="4.9"> <Button android:id="@+id/suites" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/ic_launcher_background" /> </LinearLayout> <LinearLayout android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="0.2"></LinearLayout> <LinearLayout android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="4.9"> <Button android:id="@+id/marine" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/ic_launcher_background" /> </LinearLayout> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="130dp" android:layout_marginTop="3dp" android:orientation="horizontal" android:weightSum="10"> <LinearLayout android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="4.9"> <Button android:id="@+id/pool" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/ic_launcher_background" /> </LinearLayout> <LinearLayout android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="0.2"></LinearLayout> <LinearLayout android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="4.9"> <Button android:id="@+id/waterpark" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/ic_launcher_background" /> </LinearLayout> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="130dp" android:layout_marginBottom="2dp" android:layout_marginTop="3dp" android:orientation="horizontal" android:weightSum="10"> <LinearLayout android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="4.9"> <Button android:id="@+id/apartments" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/ic_launcher_background" /> </LinearLayout> <LinearLayout android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="0.2"></LinearLayout> <LinearLayout android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="4.9"> <Button android:id="@+id/helipad" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/ic_launcher_background" /> </LinearLayout> </LinearLayout> </LinearLayout> </ScrollView>

  

如果是这样,最好怎么做?

根本不使用JavaScript字符串文字。

JSON是JavaScript文字符号的子集,因此只需将其视为JavaScript即可。不要尝试将其包装在字符串中,然后显式解析它。

'data with ' and then at the end'

答案 1 :(得分:0)

  

有单引号要转义吗?如果是这样,怎么做到最好?

json_encode应该逃避所有需要转义的内容。

  

是json_encode然后在js JSON.parse中将php-Array传递给js(在模板中)的最佳实践?如果没有,最好怎么做?

您应该使用json_encode以确保输出正确。不要依赖默认数组输出。它与JSON无关。

您根本不需要在这里使用JSON.parse。

var prices = <?= json_encode($this->prices_json); ?>;

答案 2 :(得分:0)

试试php:addslashes(json_encode($php array))