2011-12-16 5 views
0

J'ai créé un service Web et l'appelle à partir de mon javascript en utilisant ajax. Il fonctionne sur Internet Explorer dans une certaine mesure mais échoue quand j'appelle essayer de l'exécuter sur Safari ou Firefox. Quelqu'un sait-il pourquoi?service Web ne fonctionne pas sur safari

Voici mon code js:

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

"Échec" comment? Lorsque vous le parcourez avec les outils de débogage de Safari ou avec FireBug, que se passe-t-il? – David

+0

Je suppose que la console javascript a quelque chose à dire ... – rds

+1

S'il vous plaît envisager d'utiliser Fiddler pour déboguer les services Web. http://www.fiddler2.com/fiddler2/ – Intrigue

Répondre

1

Vous pouvez trouver vous-même en utilisant un débogueur Javascript tel que Firebug pour Firefox, ou l'inspecteur Web intégré pour Safari.

Vérifiez d'abord votre journal des erreurs javascript et la console pour les erreurs d'analyse, s'il n'y en a pas, utilisez les points d'arrêt pour parcourir votre code pour voir comment il s'exécute. Si vous trouvez quelque chose de spécifique que vous ne comprenez pas, n'hésitez pas à poser des questions à ce sujet.

Considérez également l'erreur peut-être dans votre service Web, pas où vous l'appelez.

+0

Le service Web fonctionne correctement. En outre, il renvoie les données correctes de ma base de données quand je l'appelle l'utiliser sur Internet Explorer. Quand je l'exécute sur safari cependant, il n'appelle pas la méthode d'ajax ainsi j'imagine que peut-être les demandes de xml sont envoyées différemment sur le safari? – theNoobProgrammer

0

Safari est plus sécurisé que IE ou Chrome. Vous pouvez facilement exécuter sur chrome ou IE car safari a besoin du certificat de ce serveur dont vous appelez le service. Assurez-vous que vous créez un certificat pour ce serveur si vous voulez exécuter cela sur mac ou Iphone

Questions connexes