2012-11-06 3 views
0

저는이 문제를 오랫동안 파악하려고 노력해 왔습니다. 나는 JavaScript가 클라이언트 측 스크립팅이고 PHP는 서버 측 스크립팅이라는 것을 알고 있지만 브라우저 에포크 시간을 PHP 스크립트에 전달하여 일부 계산을 실행 한 다음 결과에 따라 geoJSON 데이터를 반환 할 수 있습니다. 모두 비동기식으로?클라이언트에서 서버로, 그리고 클라이언트에서 비동기로 값을 전달합니다.

function retreiveUTC() { 
    var now = new Date().getTime(); 
    var browserUTC = Math.floor(now)/1000.0; // this returns epoch time of the browser 
} 

는 다음 나는 함수에서 생성 된 시대의 시간을 무엇을 결정하기 위해 PHP 스크립트에 전달하고 싶습니다 :

나는 PHP 스크립트에 전달하려는 기능은 같은 것입니다 반환 할 JSON 파일.

예를 들어 I는 서버에있는 다음과 같은 파일이있을 것이다 :

 
1352188536.JSON 
1352187536.JSON 
1352177536.JSON 

그리고 브라우저에 가장 가까운 결과를 획기적인있는 하나를 검색 할 수 있습니다. 미리 감사드립니다. 아래

업데이트 코드 :

하지 내가 잘못하고 있어요,하지만 난 아약스 호출에서 성공을 얻고 있지만, 반환 값이 정의되지 않은 것을 확인합니다.

아약스 물건 :

$.post ('timezone.php', 
    { 
     epochTime: browserUTC 
    }, 
    function (result) { 
     //do someting to result 
    }, "json"); 

    var browserUTC = new Date().getTime(); 

    $.post ('timezone.php', 
    { 
     epochTime: browserUTC 
    }, 
    function (result,status) { 
    //display file name returned by PHP 
     alert(result.file + "\n" + status); 
    //console.log('test'); 
    }); 

PHP :

<?php 
    $epochTime = round($_POST['epochTime']/1000); 
    $res= array(); 
    $res['file'] = $epochTime . '.JSON'; 
    return json_encode($res); 
    ?> 

답변

0

난 당신이 비동기 요청에 대해 묻는 것 같아요. PHP 스크립트에 AJAX 요청을 보내고 해당 JSON 데이터를 가져 와서 처리 할 수 ​​있습니다. 디자인을 변경해야합니다.

처음 페이지가 요청되면 일반 데이터 (JSON 제외)를 보내고 클라이언트 측에서 javascript 파일을로드하자마자 함수를 호출 할 수 있으며 함수의 끝에서 AJAX는 해당 JSON 파일을 가져 와서 클라이언트에게 넘겨 줄 다른 PHP 스크립트로 브라우저 시간을 다시 보냅니다.

jQuery 라이브러리를 사용하면 AJAX 요청을보다 쉽게 ​​처리 할 수 ​​있습니다.

0

나는 이것이 표준 AJAX 호출을 통해 이루어진다 고 생각한다. 예를 들어, 경우에 jQuery를 사용하고 있습니다 :

PHP 스크립트에서
$.post ('pathToPHPScript.php', {epochTime: browserUTC}, function (result) { 
     //do someting to result 
    }, "json"); 

는 표준 POST 변수와 같은 시대 시간의 값을 검색 할 수 있습니다

$epochTime = $_POST['epochTime']; 
//do required calculations 

그래서 PHP가에 도움이 BULT-에서 json_encode 기능 JSON으로 인코딩 된 문자열을 배열 밖으로 만듭니다. 당신이 그것을 배열을 전달하는 경우, 당신은 jQuery를에 검색 할 수 있습니다

//PHP 
$res= array(); 
$res['file'] = $epochTime . '.JSON'; 
return json_encode($res); 

와 jQuery의 콜백 함수에서

위의 인용 :

$.post ('pathToPHPScript.php', {epochTime: browserUTC}, function (result) { 
     //display file name returned by PHP 
     console.log(result.file); 
    }); 
+0

을 나는 PHP 스크립트 및 프로세스를에 신기원 값을 통과 할 수 있어요 하지만'console.log (result.file);'는 정의되지 않은 것으로 표시됩니다. 나는 실종 된 걸까? PHP 스크립트가 값을 반환하지 않는 것 같습니다. 고맙습니다. –

+0

올바른 JSON 처리를 위해 $ .post 함수에 "json"매개 변수를 추가해야했기 때문입니다. 편집 된 코드를 확인하십시오. – akhilless

+0

파일을 JSON 객체 또는 파일 이름으로 반환한다고 가정합니까? –

관련 문제