2013-11-01 2 views
0

.php 파일에서 자바 스크립트로 parametres를 보내려고하지만 String을 보내지 못합니다.PHP 변수를 JavaScript로 보낼 수 없습니다.

자바 스크립트 조각 :

var params = "action=getAlbums"; 
      var request = new XMLHttpRequest(); 

      request.open("POST", PHP CODE URL, true); 
      request.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
      request.setRequestHeader("Content-length", params.length); 
      request.setRequestHeader("Connection", "close"); 
      request.send(params); 

      request.onreadystatechange = function() { 

        var phpmessage = request.responseText; 
        alert(phpmessage); 

      }; 

PHP의 조각 :

$deviceFunction = $_POST["action"]; 
if ($deviceFunction == "") $deviceFunction = $_GET["action"]; 

// Go to a function depending the action required 
switch ($deviceFunction) 
{ 
    case "getAlbums": 
     getAlbumsFromDB(); 
     break; 
} 



function getAlbumsFromDB() 
{ 

    echo "test message!"; 

} 

phpmessage를 포함하는 경고가 나타나고 있지만 (실제로 두 번 표시) 빈입니다. 내가 이렇게 할 경우 경고도 작동하지 않습니다

request.onreadystatechange = function() { 
       if(request.status == 200) { 
        var phpmessage = request.responseText; 
        alert(phpmessage); 
       } 

      }; 
+2

Ajax를 사용 , Dojo 또는 jQuery와 같은 Javascript 라이브러리를 사용하여 과도한 작업을 수행하는 것이 좋습니다. –

+1

지금 당장에는 잘못 될 수있는 몇 가지 사항이 있습니다. 이 문제의 범위를 좁히려면 PHP 페이지를 변경하여 문자열 만 인쇄하면됩니다. ie :

답변

1

readystatenchange 이벤트마다 상태 변화를 호출됩니다. https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#readyState

이 JS를 다시 작성

: 코드에서

request.onreadystatechange = function() { 
    if (request.readyState == 4) { 
    console.log('AJAX finished, got ' + request.status + ' status code'); 
    console.log('Response text is: ' + request.responseText); 
    } 
} 

, 당신은 반환 된 상태 코드를 확인 5 주, 여기에서 볼 수 있습니다. 위의 코드는 준비 상태를 확인한 다음 debbuging에 대한 상태 코드를 출력합니다.

이 답변은 실제 질문에 대한 답변보다 더 많은 의견입니다.하지만 정중하게 형식이 지정된 코드를 포함시키기 위해 답을 쓰는 것이 좋습니다.

+0

문제가 되더라도 경고 메시지가 비어있는 것처럼 보입니다. PHP에서 선언 한 문자열이 아닙니다. – Phob1a

+0

@ Phob1a 응답 코드는 무엇입니까? 'open()'과'send()'를 호출하기 전에 user2945107 '제안에 이벤트 처리기를 할당 해 보았습니까? – ComFreek

+0

나는 그 제안을 따라 갔다. 응답 코드는 무엇을 의미합니까? 경고는 단지 빈 문자열을 인쇄합니다. – Phob1a

0

나는 Django와 비슷한 문제에 직면했다. 내가 한 짓 : 필요한 자바 스크립트 변수를 생성하기 위해 템플릿 언어를 사용했습니다.

저는 PHP 프로그래머가 아니지만, 아이디어가 있으면 알려 드리겠습니다. 다음은 PHP 코드가 아니며 ilustrate 용입니다.

<?php 
    <script type="text/javascript" ... > 
      SOME_VARIABLE = "{0}".format(php_function()) // php_function resolve the value you need 
    </script> 
?> 

내 스크립트에서 SOME_VARIABLE을 사용합니다.

0

open 및 send 메서드를 호출하기 전에 onreadystatechange 이벤트 처리기를 지정하십시오. 요청에 따라 GET 및 POST 방법 중에서 선택해야합니다.

요청 객체의 상태 (= 200) OK이고, readyState가 (4 =), 당신이 쓸 수있는 준비가 응답 아 파크 완료 한 경우에만 당신이 당신의 메시지를 팝업하려면 :

request.onreadystatechange = function() { 
    if (request.readyState==4 && request.status==200) { 
     var phpMessage = request.responseText; 
     alert(phpMessage); 
    } 
}; 
관련 문제