2012-01-11 2 views
3

나는이 문제로 벽에 머리를 세게 치고 있습니다. 별도의 하위 도메인에서 실행되는 매우 단순화 된 HTTP 서버에 AJAX 메서드를 사용하기 위해 JQuery 1.6.2를 사용하고 있습니다. POST로 일반 HTML 양식을 게시하면 올바른 결과를 얻지 만 물론 Javascript로 멋지게 만들고 싶습니다. jQuery 아약스가 간단한 게시물에서 항상 오류를 반환합니다.

는 그래서 아래의 설정으로 AJAX 방법을 사용 : URL이 제거

$('.send_sample').click(function() { 

     var request = $.ajax({ 
      url : "http://removedurl:8080/SAMPLES", 
      type : 'POST', 
      dataType : 'text', 
      crossDomain : true, 
      cache : false, 
      accepts : 'text/plain', 
      data : {username : '<?php echo $_SESSION['username'] ?>', first_name : '<?php echo $_SESSION['first_name']; ?>', last_name : '<?php echo $_SESSION['last_name']; ?>', company : '<?php echo $_SESSION['company']; ?>', sequence_id : '', filename : '', sample_id : '', quantity : '', output_file : '', delivery : '', email_copy : ''}, 
      success : function (return_value) { 
       console.log(return_value); 
      }, 
      error : function (error_info) { 
       console.log(error_info); 
      }, 
      complete : function (complete_jqXHR, textStatus) { 
       console.log(textStatus); 
      } 
     }); 

     console.log(request); 

    }); 

공지하지만 다른 모든 포트 8080 (서버 8080

에 HTTP 요청을 수락 날 믿어 포함 동일

그래서 내가 피들을 열었을 때이 페이지를 실행하면 요청이 꺼지고 Fiddler에서 다시 정상적으로 돌아옵니다. 나는 심지어 TRUE라는 정확한 출력을 봅니다.

HTTP/1.1 200 200 OK 
Connection: close 
Content-Length: 8 
Server: Indy/9.0.18 

TRUE 

전에 말했듯이이 소프트웨어가 사용하는이 HTTP 서버는 매우 간단합니다. 하지만 JQuery는 다른 설명없이 오류로 직접 이동합니다. Chrome에서 디버그하면 작은 메시지가 표시됩니다.

XMLHttpRequest는 http://removedUrl:8080/SAMPLES을로드 할 수 없습니다. Origin http://192.168.2.140은 Access-Control-Allow-Origin에서 허용되지 않습니다.

누가이 문제의 원인인지 알 수 있습니까?

또한, 나는 점진적으로 JQuery와의 아약스 방법의 필드를 추가 한 : 데이터 유형 도메인 간, 캐시, 그것은 차이가 있는지 만 확인 ... 받아들입니다.

감사합니다.

+0

'dataType : 'text','? 당신이 json을 게시하려고하는 것처럼 보이지만 (물론 데이터에는 유효한 json이 아니다 : 물론), 또는 유효한 텍스트가 실제로 "보인다". –

답변

0

크로스 사이트 요청을하려면 jsonp를 사용해야합니다 ....
crossDomain : true로 설정하면 브라우저가 외부 도메인에서의 응답을 차단하지 못하게됩니다.
이것은 잘 알려진 javascript 제한이지만, 내가 말했듯이 jsonp를 사용하여 제거 할 수 있습니다. Google을 사용하면 많은 리소스를 찾을 수 있습니다!
jsonp 응답을 받으려면 서버 "http : // removedurl : 8080/SAMPLES"를 수정해야합니다.
서버에 액세스 할 수없는 경우 서버 측 프록시 (PHP/ASP.Net 등)에 의존해야합니다.

관련 문제