2011-12-16 4 views
0

웹 서비스를 만들고 자바 스크립트에서 아약스를 사용하여 호출합니다. 그것은 인터넷 익스플로러에서 어느 정도 작동하지만, 사파리 나 파이어 폭스에서 실행하려고하면 실패합니다. 아무도 이유를 아나요?웹 서비스가 사파리에서 작동하지 않습니다.

function GetTopApps() { 
    var serviceUrl = "http://localhost:2975/GetData.asmx?wsdl"; 

    var soapMessage ='<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><HomeScreenApps xmlns="http://tempuri.org/" /></soap:Body></soap:Envelope>' 


    $.ajax({ 
     url: serviceUrl, 
     type: "post", 
     datatype: "xml", 
     data: soapMessage, 
     complete: GenerateList, 
     contentType: "text/xml; charset=\"utf-8\"" 
    }); 

    return false; 
} 

function GenerateList(xmlHttpRequest, status) { 
    $(xmlHttpRequest.responseXML) 
       .find('HomeScreenAppsResult') 
       .each(function() { 
       parseXML(xmlHttpRequest); 
      }); 
     } 

function parseXML(xmlHttpRequest) { 
    var xmlDoc = xmlHttpRequest.responseXML; 
    var appIdArray = xmlDoc.getElementsByTagName('application_id'); 
    var appNameArray = xmlDoc.getElementsByTagName('application_name'); 
    var appRatingArray = xmlDoc.getElementsByTagName('average_rating'); 

    var appCount = appIdArray.length; 
    var appList = document.getElementById('TopApps'); 

    var htmlString = "<small><small><small><small><small><small><small><ul data-role='listview' data-filter='false' id='list'>"; 

    for (i = 0; i < 5; i++) { 

     htmlString = htmlString + "<li><a id='" + appIdArray[i].xml + "' onclick='AppSelected(id);'>"; 
     htmlString = htmlString + "<img src='' alt='Logo' class='ListAppLogo'>"; 
     htmlString = htmlString + "<h3>" + appNameArray[i].xml + "</h3>"; 
     htmlString = htmlString + "<p>" + appRatingArray[i].xml + ".0/5.0</p>"; 
     htmlString = htmlString + "<input type='hidden' value='" + appIdArray[i].xml + "'></a></li>"; 
    } 

    htmlString = htmlString + "</ul></small></small></small></small></small></small></small>"; 
    appList.innerHTML = htmlString; 
    $('#list').listview(); 

} 
+1

"실패"하는 방법은 무엇입니까? Safari의 디버깅 도구 또는 FireBug를 사용하여 단계를 수행하면 어떻게됩니까? – David

+0

자바 스크립트 콘솔에 뭔가 말하고 있다고 가정합니다 ... – rds

+1

피들러를 사용하여 웹 서비스를 디버깅 해보십시오. http://www.fiddler2.com/fiddler2/ – Intrigue

답변

1

당신은 자신을 파이어 폭스에 대한 방화범, 또는 Safari에 내장 된 웹 관리자로 자바 스크립트 디버거를 사용하여 찾을 수 있습니다

여기에 내 JS 코드입니다.

자바 스크립트 오류 로그와 콘솔에서 구문 분석 오류를 확인하십시오. 중단 점을 사용하지 않으면 코드를 실행하여 코드 실행 방법을 확인할 수 있습니다. 당신이 이해하지 못하는 구체적인 것을 발견하면 그것에 대해 언제든지 물어보십시오.

오류는 웹 서비스가 아닌 사용자가 호출하는 곳에서 발생한다고 생각하십시오.

+0

webservice는 그 자체로 잘 작동합니다. 또한 Internet Explorer에서 사용할 때 데이터베이스에서 적절한 데이터를 반환합니다. 그러나 사파리에서 실행하면 아약스 메서드가 호출되지 않으므로 아마도 xml 요청이 사파리에서 다르게 전송됩니다. – theNoobProgrammer

0

Safari는 IE 또는 Chrome보다 안전합니다. safari에는 서비스를 요청하는 서버의 인증서가 필요하기 때문에 Chrome 또는 IE에서 쉽게 실행할 수 있습니다. Mac 또는 iPhone에서 인증서를 실행하려면 해당 서버의 인증서를 만드십시오.

관련 문제