2014-03-25 3 views
0

자바 스크립트 스크립트가 샐비어 추출물에서 데이터를 추출하여 자바 스크립트 객체 (JSON 같음)에 저장하는 시스템을 만들고 있습니다. PHP를 통해 SQL 데이터베이스에 데이터를 업로드해야합니다.자바 동적으로 PHP와 통신

나는 Iframe을 사용하여 src를 PHP 페이지 URL로 변경 한 다음 URL을 통해 페이지에 GET 변수를 전달한다고 생각했습니다. 실제로 태그를 사용할 수 있는지 궁금합니다. 새 이미지를 만들고 PHP 페이지 URL에 src를 설정하면 (다시 GET 변수를 전달 함) PHP 페이지가 나머지 작업을 수행 할 수 있습니까? 나는 이미지가 아무것도 표시하지 않을 것이라는 것을 안다, 그것은 필요가 없다. PHP 페이지로 데이터를 전달하는 방법이 필요합니다.

모범 사례?

+0

1. ''및 _GET URI_를 사용하여 서버에 데이터를 전달할 수 있습니까? 그렇습니다.하지만 서버를 다시 말하면 픽셀 인코딩/디코딩에 많은 노력이 필요할 수 있습니다. 2. 모범 사례? [_XMLHttpRequest_] (https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest). _Origin_을 고려해야 할 수도 있습니다. –

+0

PHP 페이지에서 데이터를 가져올 필요가 없습니다. 이미지가 '로드'될 때까지 기다릴 수 없습니까? 이것은 PHP 스크립트가 서버 측에서 데이터를 처리했음을 보장합니까? –

+0

_error_와 _load_를 찾아야합니다. 여전히 _XMLHttpRequest_가 더 나은 선택이라고 생각합니다. 지금 답변을 작성 중입니다 ... –

답변

2

JavaScript을 사용하여 서버와 통신하는 현대적인 방법은 XMLHttpRequest입니다. 기본적으로 이는 비동기식이며 동기 요청이 나쁜 관행으로 간주 될 수 있지만이를 변경하는 옵션을 제공합니다. 여기

도 기본적인 예 A FormData 당신에게 약간의 시간을 절약하여

function sendObject(object, uri, callback) { 
    var xhr = new XMLHttpRequest(), 
     data = new FormData(); 
    data.append('object', JSON.stringify(object)); 
    if (callback) xhr.addEventListener('load', callback); 
    xhr.open('POST', uri); 
    xhr.send(data); 
} 
// ex. usage 
sendObject(
    {foo: "bar"}, 
    "/somepage.php", 
    function() {console.log('completed with code:', this.status)} 
); 

입니다. 당신이 그것을 사용할 수있을 것으로 예상 할 수없는 경우, 단순히 서버와 통신하기 위해 자바 스크립트와 HTML 페이지에 대한 두 개의 다른 대답으로

postData = encodeURIComponent(key) + '=' + encodeURIComponent(value) + '&' + etc; 
+0

_GOS_가 _JSON_을 보내는 데 실제로 적합하지 않기 때문에 _POST_로 썼습니다. 플래그/프리미티브 데이터에 더 유용합니다. –

+0

이것은 훌륭한 대답입니다. 그러나 우리가 완전히 정직한 경우 AJAX는 jQuery를 사용한다고 말하는 곳 중 일부입니다. AJAX가 훨씬 쉽고 강력 해졌습니다. –

0

말한 수행합니다 PHP 페이지, 당신은 XMLHttpRequest을 사용해야합니다 , 일명 AJAX. Paul S.의 답변은 XMLHttpRequest을 Javascript에 직접 사용하는 방법과 관련하여 가장 좋은 답변입니다.

그러나 기억해야 할 점 중 하나는 이전 버전의 브라우저, 특히 Internet Explorer 버전 9 이하를 지원해야하는 경우 단점을 보게 될 것이므로 라이브러리를 사용하는 것이 좋습니다. AJAX 메소드뿐만 아니라 데이터 처리 및 요청 전, 도중 및 이후 DOM 조작을 포함하는 다목적 라이브러리의 경우 가장 좋은 방법은 jQuery을 사용하는 것입니다. 예를 들어, AJAX 요청 양식에서 데이터를 전송하려면 :

$.ajax({ 
    url: 'http://www.example.com/data.php', 
    data: $(form).serialize(), 
    dataType: 'JSON', // JSON will be returned if possible 
    type: 'POST' 
}).then(function(data) { 
    ... 
}); 

jQuery를 중대하다, 그러나 또한 큰 도서관입니다 만 정말로 원하는 또는 AJAX 요청을해야하는 경우, 작은 라이브러리를 찾을하는 것이 좋습니다 또는 use a function that's known to work cross browser jQuery가 약속을 이상하게 취급한다는 점도 중요합니다. 함수가 값을 돌려 주지만 당장은 반환하지 않는다고 말하는 방식입니다. 이러한 약속은 코드에 여러 중첩 된 함수를 포함시키지 않고 AJAX 함수를 함께 연결하는 경우에 필요합니다. 가장 잘 알려진 두 가지 약속 라이브러리는 rsvp.jsq입니다.