2012-07-05 9 views
2

다음 코드에서 구문 오류가 발생했습니다. 코드의 첫 번째 줄을 제거하고 나면 경고 메시지가 나타납니다. 내 두뇌는 거의 죽었고 그 이유를 알 수 없다. 도와주세요. 고마워.간단한 자바 스크립트 오류

JS

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

alert("Hello World"); 

실패하면되도록

<?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 반환 업데이트

HTML, echo false가 출력 아무것도.

코드가 아래에 표시되어 구문 오류가 발생합니다.

var rss = ; 

alert("Hello World"); 

편집 : 업데이트 된 편집에서 는 이유는 다음과 같습니다 당신은 JS 파일에 PHP 코드를 쓸 수 없습니다.

js 파일에서 해당 변수가 필요한 경우 먼저 전역 변수에 할당하십시오.

문제는이 아닌 유효한 JSON 문자열을 반환 할 수 있으며 새로운 예외가 발생한다는 것입니다
var rss = <?php echo json_encode($test); ?>; 

,

: 자바 스크립트는 치명적인 오류가 발생하고 있기 때문에 현재 스크립트의 실행을 중지하기 때문에
<script type="text/javascript"> 
    var rss = <?php echo json_encode($test); ?>; 
</script> 
<script type="text/javascript" src="js/slideshow.js"></script> 
+0

도움에 감사드립니다. 내 JS 파일에 내 PHP 배열을 가져 오려고합니다. 내 업데이트 된 질문을 참조하십시오. +1. – FlyingCat

+0

@Jerry 제 편집을 확인하십시오. – xdazz

+0

참고로, JS 파일을 PHP가 구문 분석해야한다는 것을 서버에 알리는 것이 가능합니다 (PHP 코드를 넣을 수 있음). 하지만 모든 스크립트가 인터프리터를 통해 실행된다는 것을 의미하기 때문에 거의 완료되지 않았습니다. 대부분의 JS 파일이 JS 일 경우 낭비되는 CPU 시간이 많이 걸립니다. – cHao

1

입니다

할 수있는 것 :

먼저 PHP에서 얻은 문자열이 실제로 유효한지 확인해야합니다. JSON 방법은 일반적으로 오류가 발생 할 , 당신은 단순히 오류를 방지하려면 다시 javaScipt

+0

구문 분석 오류가 잡히지 않을 가능성이 높습니다 ... – cHao

+0

PHP에 대해 이야기하는 경우 사실입니다. 그러나 JS에서는 catch를 수행합니다 – Yang

+0

[분명히 아닙니다.] (http://jsfiddle.net/dxsXt/) – cHao

2

을 무효 JSON 문자열을 보내는 방지하기 위해 유효 인 경우

PHP에서
try { 

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

} catch(e){ 

    alert('Invalid JSON string'); 
} 

이 또한 확인하시기 바랍니다 try/catch 블록으로이 VAR를 넣을 수 있습니다 당신의 코드가 있어야한다 :

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

에도 json_encode 경우 반환 false, 코드는 다음과 같습니다

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

그 오류를 피하기위한 좋은 해결책입니다. 왜 내 $ 테스트가 무효인지 잘 모르겠습니다. 내 업데이트 된 PHP를 참조하십시오. +1. – FlyingCat

+0

PHP 인터프리터가 braindead이면 (완전히 예상 됨) 결국'json_encode'가 두 번 실행됩니다. 오, 그리고 PHP가 * 여전히 * 빠져 나오지 않도록 당신의'' '를 인용 할 수 있습니다. :) – cHao

+0

@cHao; 아, 그래, 고마워. – Blaster

1

.js 파일에서 PHP가 작동하지 않습니다. 확장자가 .php 인 파일에서만 작동합니다. JS 코드를 PHP 페이지에 넣으십시오. 그것은 작동합니다.