2009-06-22 8 views
1

응용 프로그램을 개발하고 있지만 Firefox에서 작동하도록하는 데 문제가 있습니다. 응용 프로그램은 교육용 응용 프로그램 (공유 창에 표시된 웹 사이트)에서 자바 스크립트 호출을 수신하며 .net 웹 서비스에서 값을 반환해야합니다. 값은 호출을 수신하는 동일한 함수에서 리턴되어야합니다. webservices 반환 값은 true, false 또는 때로는 데이터베이스의 값일 수있는 문자열입니다. 웹 서비스는 아약스를 지원합니다.Firefox Ajax jquery 호출 오류

jquery-1.3.2를 사용하여 javascript를 사용하여 webservice를 호출하는 방법을 정확히 알지 못하기 때문에.

Internet Explorer에서는 코드가 작동하지만 Firefox에서는 async : fale에도 불구하고 값을 반환 할 때까지 기다리지 않습니다.

function API_LMSInitialize(param) 
{ 
    res="true"; 
    $.ajax({ 
    type: "POST", 
    contentType: "application/json; charset=utf-8", 
    url: "../../../GateWay/WebService.asmx/LMSInitialize", 
    data: "{'courseid':'"+courseid+"','userid':'"+userid+"'}", 
    dataType: "json", 
    async: false, 
    success: function(msg) { res = msg; }, 
    error: function(){ res="false"; } 
    }); 

    return res; 
} 

의견이 있으십니까?

+0

async : false 옵션없이 시도해 보셨습니까? – karim79

+0

@ karim79, 그의 함수에서 null을 반환하므로 여전히 문제가 해결되지 않을 것입니다. – redsquare

답변

0

아마 ajax 호출이 실패하고 오류 콜백을 통해 종료됩니다. 이를 확인하기 위해 경고를 추가하거나 Firebug 및 console.log를 더 잘 사용할 수 있습니다.

IE에서 호출이 성공하고 Firefox에서 실패하는 이유는 반환 된 JSON 데이터와 관련이 있습니다. Firefox가이 데이터를 올바르게 구문 분석 할 수 있습니까? 방화 광케이블도이 문제를 해결할 수 있습니다.

마지막으로 동기 모드를 사용하는 것은 좋지 않습니다. 비동기로 작동하도록 코드를 수정하는 것이 좋습니다.

+0

JSON이 다시 돌아올 것이라고 확신합니까? –

+0

@Nerdling - 그는 데이터 타입을 json으로 설정했습니다. – redsquare

+0

나는 json을 파싱 할 수 있는지 의심 스럽다. FF는 그렇지 않다. – redsquare

1

가장 좋은 방법은 asynch를 사용하지 않는 것입니다. false는 브라우저를 끊고 어떤 이유로 든 아약스 호출이 실패하면 사용자가 브라우저 창을 닫아야하기 때문입니다. 가장 좋은 방법은 기존 API_LMSInitialize 함수에 콜백 함수를 전달하는 것입니다.이 함수는 ajax 호출 성공시 이 호출됩니다. 또한 호출 코드의 일부를 다시 작업하여 콜백 함수로 옮겨야합니다.

예컨대

API_LMSInitialize('someParam', callbackFn); 


function API_LMSInitialize(param, callback) 
{ 

    $.ajax({ 
    type: "POST", 
    contentType: "application/json; charset=utf-8", 
    url: "../../../GateWay/WebService.asmx/LMSInitialize", 
    data: "{'courseid':'"+courseid+"','userid':'"+userid+"'}", 
    dataType: "json", 
    async: false, 
    success: function(msg) { callbackFn(msg) }, 
    error: function(){ res="false"; } 
    }); 

} 

function callbackFn(msg){ 

    //do something with the returned data 
} 
0

구성이 이미 설정되어 있지 않은 경우 IIS에서 웹 응용 프로그램으로 웹 서비스.

0

dataType : "html"이 내 문제를 해결했습니다.