2011-08-09 3 views
0

다른 사이트에서 데이터를 수집하고 ajax 및 php를 통해 SQL 데이터베이스에 저장하는 jquery 스크립트가 있습니다. 현재 스크립트는 사이트의 각 콜렉션을 별도로 저장합니다. 이를 변경하여 스크립트가 배열의 모든 데이터를 수집하고 수집이 완료되면 배열을 PHP 파일에 전달하여 데이터베이스에 저장합니다.각 구문 외부 빈 배열 jquery ajax json

이제 문제는 "각 루프"다음에 배열을 아약스 문으로 보낼 수 없다는 것입니다. "각 루프"안에 배열을 보내면 (순간에 PHP 파일의 세션에 데이터를 저장하므로 구조를 볼 수 있고 이에 따라 pdo 문을 적용 할 수 있음), 그런 다음 각 "루프"이후에 게시물 요청. 나는 그것을 피하기 위해 마지막 배열 전체에 하나의 POST 요청 만 남기고 싶다. 그러나 "각 루프"다음에 아약스 게시물 요청을 사용하면 배열은 그냥 비어 있습니다. 배열을 전역으로 만들어서 각 문 외부에서 사용할 수 있다고 생각했지만 어떤 이유로 작동하지 않습니다.

문제를 해결하는 방법에 대해 알고 계십니까? 다음은 스크립트입니다.

$('#ScanButton, .ScanButton').click(function() { 

var array = ["http://www.xyz.com/bla/bla/summary.html", 
      "http://www.xyz.com/blu/blu/summary.html", 
      ]; 

dataArray = []; 

$.each(array, function(n, val) { 


$.get(val, function(res) { //get the html source of this website 

    var data = { 

    } 

    dataArray.push(data); 

// 여기 $ .ajax 문을 사용하면 올바른 배열이 제출됩니다. 하지만 각 루프마다 POST 요청이 있습니다. });

});

//If I use the $.ajax here, the array I get is just empty. Any Idea how to solve this? 
data = YAHOO.lang.JSON.stringify(dataArray);  



    $.ajax({ 
    type:   'post', 
    cache:   false, 
    url:   'test.php', 
    data:   {myJson: data} 
    }); 

    return false; 

    }); 

문제의 위치는 알고 계십니까? 더 자세한 정보가 필요하면 알려주십시오. 대단히 감사합니다! :)

답변

1

[편집] 롤 I 가져 오기 요청이 비동기, 그리고 당신이 당신의 최종 배열을 보내기 전에 아마 완료되지 않았기 때문에 바보는, 어쨌든, 당신의 배열이 null 인 이유는 해요. 가져 오기, 동기화, (아마도 당신이하고 싶은 일이 아닐 수도 있습니다) 또는 모든 배열이 완료 될 때까지 최종 배열을 보내기를 기다리십시오.

+0

예제는 기본적으로 내 것과 같습니다. $를 사용하여 변수 dataArr을 변경했습니다. 그 전에는 ..하지만 방화 광에서 "정의되지 않은"것을 얻었고 여전히 빈 배열을 얻었습니다. $를 제거함으로써 전 세계적으로 dataArr를 만들지 않았기 때문에 undefined가 나타납니다. .. 그래서 나는 여전히 같은 문제가 있습니다. btw : 귀하의 예에서는 각 루프가 누락되었습니다 ..;) 도와 주셔서 감사합니다! – Sebsemillia

+0

@sebsemilla 각 루프의 범위 밖에서 선언 된 것만 큼 전역 화되는 것을 원하지는 않습니다. jQuery 객체에 연결해서는 안됩니다. – Andrew

+0

나는 당신의 권고에 따라 지금 그것을 바꿨 던 것처럼 내 질문에 스크립트를 바꿨다. 그러나 나는 여전히 빈 배열을 얻는다. 아마 내가 간과 한 실수를 볼 것입니다. 고마워요! – Sebsemillia