2012-07-05 3 views
2

Я получил синтаксическую ошибку в следующем коде. Как только я вынул первую строку кода, появляется предупреждение. Мой мозг почти мертв, и я не могу понять, почему. Пожалуйста помоги. Большое спасибо.Простая ошибка Javascript

JS

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

alert("Hello World"); 

Обновлено

HTML

<?php 

    $test=get_array(); 

    //the $test is a multi-dimention array. 

    ?> 


<script type="text/javascript" src="js/slideshow.js"></script> 
+0

Не могли бы вы вывести функцию функции 'json_encode'? –

+0

не могли бы вы опубликовать то, что вы получаете в поле зрения или что у вас есть в $ test? – gaurang171

+0

Это многомерный массив. Не уверен, если это причина. см. обновленный вопрос. Большое спасибо. – FlyingCat

ответ

5

json_encode возвратит FALSE при неудаче, так что если это не удается, echo false выведет ничего.

поэтому ваш код стал ниже, что дает вам синтаксическую ошибку.

var rss = ; 

alert("Hello World"); 

Edit: С обновленной редактировать, причина: Вы не можете писать код PHP в файле JS.

Если вам нужна эта переменная в файле js, сначала назначьте ее глобальной переменной.

<script type="text/javascript"> 
    var rss = <?php echo json_encode($test); ?>; 
</script> 
<script type="text/javascript" src="js/slideshow.js"></script> 
+0

Спасибо за помощь. Я пытаюсь привести свой php-массив в свой JS-файл. См. Мой обновленный вопрос. +1 хотя. – FlyingCat

+0

@Jerry Проверьте мое редактирование. – xdazz

+0

Для справки можно сказать серверу, что файлы JS должны анализироваться PHP (что позволит вам вставить в них PHP-код). Но это вряд ли когда-либо делается, потому что это означает, что каждый скрипт запускается через интерпретатор (что очень много теряется в процессорном времени, если большинство JS-файлов - это просто JS). – cHao

1

Это происходит потому, что JavaScript бросает фатальную ошибку и прекращает выполнение текущего скрипта из-за:

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

Проблема заключается в том, что это может вернуть недействительный строку JSON и выбрасывает новое исключение,

Что вы можете сделать:

Прежде всего, вы должны определить, действительно ли строка, полученная вами из PHP, действительна. Как методы JSON обычно бросают ошибки, вы можете просто поместить этот вар в try/catch блок

try { 

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

} catch(e){ 

    alert('Invalid JSON string'); 
} 

В PHP, пожалуйста, проверьте, если она действует, чтобы предотвратить отправку недопустимый строку JSON обратно в Javascipt

+0

Довольно уверен, что ошибка синтаксического анализа не будет увлекательной ... – cHao

+0

Если вы говорите о PHP, то это правда. но в JS он поймал – Yang

+0

[Видимо, нет.] (http://jsfiddle.net/dxsXt/) – cHao

2

Чтобы избежать ошибок ваш код должен быть:

var rss = <?php echo json_encode($test) ? json_encode($test) : "''"; ?>; 
alert("Hello World"); 

Даже если json_encode возвращает false, ваш код будет:

var rss = ''; 
alert("Hello World"); 
+0

Это хорошее решение, чтобы избежать ошибки. Я не уверен, почему мой $ test недействителен. См. Мой обновленный php. +1 хотя. – FlyingCat

+0

Обратите внимание, что если интерпретатор PHP является braindead (и я полностью ожидаю, что он будет), он в конечном итоге будет запускать 'json_encode' дважды. О, и вам может потребоваться процитировать ваш '' '', чтобы PHP не * все еще ничего не выплевывал. :) – cHao

+0

@cHao; О да обновленный спасибо – Blaster

1

В файле .js PHP не работает. Он будет работать только в файлах с расширением .php. Поместите свой JS-код на страницу PHP; то это работает.