2011-12-07 2 views
1

jQuery 1.7.1을 사용하여 원격 도메인에있는 Ruby on Rails 애플리케이션을 쿼리하는 스크립트가 있습니다. 이 스크립트는 Chrome 및 IE9에서도 정상적으로 작동하지만 Firefox에서는 작동하지 않습니다. 파이어 폭스에서 난 단지 "beforeSend을"다면,Crossdomain jQuery.ajax가 firefox 8에서는 작동하지 않지만 Chrome/IE에서는 작동합니다.

Informer= { 
    getData: function(args) 
    {  
    $.ajax({ 
     dataType: 'jsonp',    
     data: args, 
     url: 'http://localhost:3000/informer.js', 
     beforeSend: function() { 
     alert("beforeSend"); 
     }, 
     error: function() { 
     alert("error"); 
     }, 
     success: function (data) {  
     alert("success"); 
     }, 
     complete: function(){ 
     alert("complete"); 
     } 
    }); 
    } 
} 

내가 크롬에 따라서이

$(document).ready(function() 
{ 
    Informer.getData(someArgs); 
}); 

과 같이 호출 내가 3 경고를 얻을 : 여기

는 스크립트입니다. 나는 또한 방화범에 대한 요청을 보지 못했다.

확실히 URL과 관련이 있습니다. 나는 그것을 http://jsfiddle.net/echo/jsonp/으로 바꿨고 효과가 있었다. 하지만 여전히 2이는 이유는 다음과 같습니다

UPD 한마디로

, 여기에 내가 지금까지이 작업은 다음과 같습니다

  1. 그것은 (3 시간 낭비 모든 어제 나를 위해 작동하지 않았다, 한숨) 그리고 그것은 오늘한다.
  2. 그것은 항상 요청이
  3. 스크립트가 실패 방화범
  4. 에 표시되지 크롬과 IE
  5. 에서 작동
  6. 는 (의미, 나는 단지 beforeSend 경고를 얻을), 내 응용 프로그램의 로그가 업데이트되지 않습니다 (나는 가정 FF는 요청을 보내지 않음)
  7. 결과가없는 jquery-jsonp를 사용해 보았습니다.
  8. 11 명의 사용자 중 10 명이 FF8로 스크립트가 작동했다고보고했습니다.

Here's interrested 사람들을위한 테스트 스크립트 (있는 경우)

+0

URL이 있는지 확인하십시오. 다른 JS 파일로 AJAX 호출을 하시겠습니까? – Jemaclus

+0

이봐, Jemaclus. 내가 말했듯이, 스크립트는 Chrome에서 완벽하게 작동하므로 URL이 확실하게 존재합니다. informer.js는 실제로 파일이 아닙니다. JSONP를 반환하는 레일즈 액션의 루비입니다. – bassneck

+0

재미있게하기 위해 나는 이것을 다음과 같이 정리했다 : http://jsfiddle.net/MarkSchultheiss/NKgyM/ sample. 이제 내 질문은 당신이 사용하고있는 URL에 오류가 없다면 어떤 브라우저에서도 오류 (경고 오류)가 발생하는 이유입니다. –

답변

1

그냥 당신이 유효하게 (난 당신의 안녕 부분을 삽입 ... 당신이 거기에 있었다 가짜 무엇을 모르고 에 고정 매개 변수 문제 :

Informer = { 
    getData: function(args) { 
     $.ajax({ 
      dataType: 'jsonp', 
      data: args, 
      url: 'http://localhost:3000/informer.js', 
      beforeSend: function() { 
       alert("beforeSend"); 
      }, 
      error: function() { 
       alert("error"); 
      }, 
      success: function(data) { 
       alert("success"); 
     }, 
      complete: function() { 
       alert("complete"); 
     } 
     }); 
    }, 
    howdy: {} 
}; 
var someArgs = { 
    hi: "me" 
}; 
$(document).ready(function() { 
    Informer.getData(someArgs); 
}); 

편집 : 인수)이 테스트 할 수 있습니다 http://jsfiddle.net/MarkSchultheiss/NKgyM/

및 반환 값을 반향을 설정합니다.

+0

같은 것입니다. 크롬에서 작동, FF로 실패 :( – bassneck

+0

흠, 그렇다면 오류 경고를 생성한다면 beforesend 부분의 경고를 주석 처리하는지 궁금합니다. 죄송합니다. 테스트 할 정확한 브라우저가 없습니다. –

+0

슬프게도, 그렇지 않습니다. 내 질문을 업데이트했습니다 ... – bassneck

관련 문제