2009-11-27 7 views
3

이 코드로 AJAX 요청을하면 상태가 0으로 반환됩니다. 내가 뭘 잘못 했습니까? 또한이 코드는 여러 가지 이유로 Firefox에서만 작동하도록 설계되었습니다. 다른 서버에 연결하려고하면AJAX 요청 상태가 0을 반환합니다.

var ajax; 

function connectToOtherServer(server,port,userid,password){ 

ajax=new XMLHttpRequest(); 
ajax.onreadystatechange=validateConnection; 

params='userid='+encodeURIComponent(userid)+'&password='+encodeURIComponent(password); 

alert('http://'+server+':'+port+'/ok.txt'); 

ajax.open('POST','http://'+server+':'+port+'/ok.txt',true); 

ajax.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 
ajax.setRequestHeader("Content-length",params.length); 
ajax.setRequestHeader("Connection","close"); 

ajax.send(params); 

} 

function validateConnection(){ 
if(ajax.readyState===4){ 
if(ajax.status===200){ 

alert(ajax.responseText); 

}else{ 
alert(ajax.status); 
} 
} 
} 

답변

3

same origin policy는 당신을 막을 것

"기원"이 도메인 이름을 사용하여 정의 된 용어는 대부분의 응용 프로그램 계층 프로토콜 및 (브라우저) TCP 스크립트를 실행하는 HTML 문서의 포트. 두 자원은 이 같은 출처로 간주되며이 값이 모두 정확히 이면 입니다.

+0

huh? 처럼, 나는 아약스를 사용하여 페이지의 URL과 동일한 URL에 연결할 수 있습니까? –

+0

아니요, 동일한 서버/포트 : http://en.wikipedia.org/wiki/Same_origin_policy를 참조하십시오. – Jerome

+0

그래, 내가이 문제를 해결할 수 있을까요? –

1

jquery.com JSONP와 콜백을 사용하는 경우에만 다른 서버에 연결할 수 있습니다. 다른 서버는 JSONP/콜백 메커니즘을 지원해야합니다. 이 방법은 새로운 스크립트 태그를 작성한 다음 원격 서버가이 스크립트 태그에 콜백 코드를 리턴하도록합니다. jQuery 소스 코드를보고 JSONP를 처리하는지 확인한다.

기본적인 아이디어는 원본 URL을 원격 URL로 사용하여 스크립트 태그를 만드는 것입니다. 원격 메소드는 콜백 및 결과 JSON 데이터를 사용하여 함수 호출을 포함하는 "스크립트"를 반환합니다.

0

최근에이 문제가 발생했습니다. 나는 페이지 요소가 자동으로 업데이트되도록 AJAX를 사용하여 양식 결과를 제출했습니다. 제 도메인 호출이 정확했습니다. 데이터베이스의 SELECT 문은 작동하지만 INSERT, UPDATEDELETE 문은 그렇지 않습니다.

자바 스크립트를 통해 진행 상황을 보여주는 경고는 호출이 제대로 실행되고 있지만 프로세스의 PHP 부분에는 적용되지 않는다고 표시했습니다. 간단한 대답은 양식의 onsubmit 요소에 return false;을 포함해야한다는 것입니다. 그것을 추가 한 후에, 일들이 부드럽게 돌아갔습니다.

<form name="form" action="" method="post" onsubmit="ProcessRequest(this);return false;"> 

희망이 있습니다.

관련 문제