2013-02-21 6 views
-5

javascript를 사용하여 JSON 파일을 구문 분석하고 배열의 이미지 만 표시하려고합니다. 내가 여기서 뭘 잘못하고 어떻게 고칠 것인가 ?? 코드 실행시 화면에 출력이 없습니다. 나는 이것이 이미지를 출력 할 것이라고 생각했지만, 아무 일도 일어나지 않았다.어디서이 JavaScript JSON 파싱을 잘못 처리 했습니까?

HTML :

<!DOCTYPE html> 
<html> 

<script 'type=text/javascript' 'src=js.js'></script> 
<script type="text/javascript" src="ajax link was here"></script> 
    <head lang="en"> 
    <meta charset="utf-8"> 
    <title>images</title> 
    </head> 

    <body> 

    <div class = "movie"> 

    </div> 


    </body> 

</html> 

자바 스크립트

$(document).ready(function() { 

    $.get('http://54.243.128.130/search/movies_list/?q=inception', function (data, image) { 

     var movie = JSON.parse(data); 

     for (var x = 0; x < movie.length; x++) { 
      var mov = movie[x]; 
      //var elm = '<div class = "movie"><img src = "'+mov.img+'"></div>'; 
      var elm = mov.img; 
      $('.movie').prepend(elm); 

     } 

    }, 'text'); 

}); 

가 사전에 어떤 도움을 주셔서 감사합니다 파일.

+0

무슨 문제가 있습니까? –

+5

모르겠어, 어디가 잘못 됐니? 어떤 오류가 발생하고 있습니까? 예상되는 결과는 무엇입니까? 실제 결과는 무엇입니까? 그들은 어떻게 다른가요? 우리와 함께 일할 * 것을 *주십시오. – meagar

+0

서버가 JSON 헤더를 반환하는 경우 데이터 변수는 이미 배열로 변환됩니다. – Pete

답변

1

자신을 구문 분석 할 필요가 없습니다. 대신 $.getJSON을 사용하십시오.

$.getJSON('http://54.243.128.130/search/movies_list/?q=inception', function (data, image) { 

    for (var x = 0; x < data.length; x++) { 
     var mov = data[x]; 
     //var elm = '<div class = "movie"><img src = "'+mov.img+'"></div>'; 
     var elm = mov.img; 
     $('.movie').prepend(elm); 

    } 

} 

또한 구조가 잘못되었습니다. 해당 페이지는 다음과 같이 반환됩니다.

따라서 루프 및 데이터 액세스를 수정해야합니다. 그래서 함께 퍼팅 :

$.getJSON('http://54.243.128.130/search/movies_list/?q=inception', function (data, image) { 

     var movies = data.results; 

     for (var x = 0; x < movies.length; x++) { 
      var mov = movies[x]; 
      //var elm = '<div class = "movie"><img src = "'+mov.img+'"></div>'; 
      var elm = mov.img; 
      $('.movie').prepend(elm); 

     } 

    } 

그리고 마지막으로 만약 당신이 jsonp를 사용하거나 외부 요청을 할 수있는 로컬 프록시를 작성해야합니다 코드와 같은 서버에서이 밤은.

+0

전혀 출력되지 않습니다. 로드 된 페이지에 아무 것도 나타나지 않습니다. – MrGuy

1

우선, 당신은 변경할 수 있습니다

<script 'type=text/javascript' 'src=js.js'></script> 

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

에 그리고 당신은 당신이 겪고있는 어떤 오류/문제를 설명 할 수 있습니까?

-2

JSON.parse 함수는 사전이 아닌 배열을 반환합니다. 따라서 JSON.parse의 출력으로 사전이 있다고 가정 해 봅시다.
var movie = {a : 1, b : 2, c : 3};
그럼 당신은 그런 식으로 그것을 반복해야합니다

for(var i=0;i<Object.keys(movie).length;i++){ 
    var mov = movie[Object.keys(movie)[i]]; 
    var elm = mov.img; 
    $('.movie').prepend(elm 
} 
+0

JS에서는 사전이 아닌 _objects_가 사용됩니다. – Barmar

+0

또한 문자열이''[1,2,3]''과 같은 경우 JSON.parse는 실제로 배열을 반환합니다 – Phil

+0

죄송합니다.2 큰 실수, 고마워요 :) – haitaka

관련 문제