2010-06-04 1 views
0

이 코드 블록은 client.html (www.client.com/client.html에 있음) - 클라이언트 측 코드입니다.이 Ajax 스크립트를 사용하여 클라이언트와 서버간에 통신하고 데이터를 교환 할 수 있습니까?

ajaxRequest.open("GET", "http://www.server.com/ajax.php", true); 

이 내가 서버에있는 파일 ajax.php를 호출하는 방법입니다

은 그 아래의 코드는 이런 식있다. 불행히도 나는 운이 전혀 없다. 전화하는 서버에 연결할 수 없습니다. BTW, 내가 사용 해본 ips/test 사이트는 제한이 없으며 모두가 액세스 할 수 있습니다.

그러나 동일한 사이트에 client.html과 ajax.php를 넣어 시뮬레이션을 시도했지만 잘 작동합니다.

제 질문은이 스크립트가 귀하가 같은 사이트에있는 경우에만 작동합니까? 또는 클라이언트 - 서버 시나리오에서도 작동합니까? 이 작품을 만들기 위해 내가해야 할 일이 무엇입니까?

//client.html

<script language="javascript" type="text/javascript"> 
<!-- 
//Browser Support Code 
function ajaxFunction(){ 
    var ajaxRequest; // The variable that makes Ajax possible! 

    try{ 
     // Opera 8.0+, Firefox, Safari 
     ajaxRequest = new XMLHttpRequest(); 
    } catch (e){ 
     // Internet Explorer Browsers 
     try{ 
      ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP"); 
     } catch (e) { 
      try{ 
       ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP"); 
      } catch (e){ 
       // Something went wrong 
       alert("Your browser broke!"); 
       return false; 
      } 
     } 
    } 
    // Create a function that will receive data sent from the server 
    ajaxRequest.onreadystatechange = function(){ 
     if(ajaxRequest.readyState == 4){ 
      document.myForm.time.value = ajaxRequest.responseText; 
     } 
    } 
    ajaxRequest.open("GET", "http://www.server.com/ajax.php", true); 
    ajaxRequest.send(null); 
} 

//--> 
</script> 



<form name='myForm'> 
Name: <input type='text' onChange="ajaxFunction();" name='username' /> <br /> 
Time: <input type='text' name='time' /> 
</form> 
</body> 
</html> 

// ajax.php

<?php 

    echo date("H:i:s"); 

    ?> 

답변

0

브라우저는 보안상의 이유로 same origin policy을 따르십시오. 따라서 다른 도메인으로 AJAX 요청을 할 수 없습니다.

서버에 대한 제어 권한이있는 경우 도메인 간 AJAX를 허용하는 special headers을 보낼 수 있습니다. 그렇지 않으면 다른 방법을 찾아야한다고 생각합니다.

당신이 할 수있는 또 다른 일은 소스가 www.server.com에 상주하는 스크립트를 페이지에 추가하는 것입니다. 그런 다음 소스에서 새 변수에 할당하여 데이터를 전송할 수 있습니다. 이 방법으로 도메인 간 제한에 제약을받지 않고 POST, PUT, DELETE ...가 아닌 GET 요청 만 수행 할 수 있습니다. 또한 서버와의 협업이 필요합니다. AJAX 요청과는 달리 서버는 페이지를 출력하지 않지만 유효한 javascript를 출력해야합니다.

는 일반적으로 서버가 실제로 JSON에서 데이터를 인코딩하고, 주어진 함수에 전달하므로 응답이 techique가 JSONP라고

someCallback({foo: 'bar', bar: 'foo'}); 

처럼 보일 수 있습니다, 당신은 자세한 내용은 here을 찾을 수 있습니다.

관련 문제