2011-10-17 4 views
1

Ajax 요청을 위해 prototype.js을 사용하고 있습니다. 내가 바꿀 때까지 모든 것이 잘 작동했다. asynchronous에서 false으로 (동기 요청을하고 싶다.) 다음은 내 코드에서 몇 줄입니다. 그때 asynchronousfalse에를 변경하는 경우Ajax가 동기 방식으로 작동하지 않습니다.

var commOptions = { 
       contentType: 'text/xml', 
       method: 'post', 
       asynchronous: true, 
       evalJS: false, 
       evalJSON: false 
      }; 
    sProxy_Url = sUrl; 
    new Ajax.Request(sProxy_Url, commOptions); 

아약스가 작동하지 않습니다. 내가 놓친 게 있니?

+1

가 여기에 작동하기 때문에 작동하지를 정의 http://jsfiddle.net/HRu78/ – Esailija

+0

@Esailija : Ajax 호출은 HTML 응답을 제공합니다. ''비동기식 '을'false'로 변경하면 응답이 없습니다. – xyz

+0

jsfiddle이 제공 한 코드로 잘 작동하기 때문에 질문에 대한 응답을 처리 할 코드를 추가하십시오. – Esailija

답변

1

솔직히 나는 작동하지 않는 것을 볼 수 없습니다, 심지어 확인하기 위해 자바 스크립트의 응답을 얻었다 :

var commOptions = { 
       contentType: 'text/xml', 
       method: 'post', 
       asynchronous: false, 
       evalJS: false, 
       evalJSON: false 
      }; 

    var a = new Ajax.Request("/", commOptions); 
console.log(a.transport.responseText.length); //16898 

http://jsfiddle.net/HRu78/1/

+0

내 실수 였어. – xyz

+2

다행입니다. 나는 당신에게 당신의 앱을 디자인하는 방법을 말하는 것이 아니지만 동기식을 사용해야한다는 생각이들 때마다 내 경험에 비추어 볼 때 비동기식 방식이 더 좋은 것으로 판명되었습니다. – tinyd

+0

나는 이것을 비동기식으로 처리하려고 노력할 것이다. 제안에 감사드립니다. – xyz

0

동기식으로 만들기 때문에 비동기식으로 Ajax 요청을하는 것이 좋습니다. 이는 주 JavaScript 스레드를 차단하므로 사용자 환경이 좋지 않습니다 (this 참조).

그러나 동기 옵션을 실제로 사용하려면 코드를 실행할 때 발생하는 상황에 대해 좀 더 명확해야합니다. 브라우저가 차단됩니까? 아니면 함수가 반환하지만 데이터가 없습니까?

+0

동기식으로 사용해야합니다. 동기식 호출을 할 때 데이터가없는 응답을받습니다. – xyz

+0

"당신이 좀 더 명확해질 필요가 있습니다."나는 tinyd가 그가 읽은 속성, 리턴 된 HTTP 상태 코드가 무엇인지, 모든 관련 코드를 붙여 넣을지를 알아야한다는 것을 의미했다고 생각합니다. 작동하지 않으려면 얼마나 걸리나요? 즉각적입니까? – thomasrutter

+0

@thomasrutter - 예, 그게 무슨 뜻인가요! Ajinkya - Firebug (또는 Chrome 또는 IE) 로그를보고 요청이 전송되는지 확인하는 것이 좋습니다. 또한 오류를보고있는 브라우저를 말할 수 있습니까? – tinyd

관련 문제