2011-12-16 4 views
0

ウェブサービスを作成し、JavaScriptを使ってajaxを使用して呼び出しました。それはある程度Internet Explorerで動作しますが、SafariやFirefoxで実行しようとすると失敗します。なぜ誰が知っていますか?ここでウェブサービスがサファリで動作していない

は私の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

「失敗」する方法は? SafariのデバッグツールやFireBugを使用してステップ実行すると、何が起こりますか? – David

+0

私は、javascriptコンソールに何かがあると思います。 – rds

+1

WebサービスをデバッグするためにFiddlerを使用することを検討してください。 http://www.fiddler2.com/fiddler2/ – Intrigue

答えて

1

あなたはこのようなFirefox用のFirebug、またはSafariのためのビルトインWebインスペクタとJavaScriptデバッガを使用して自分自身を見つけることができます。

JavaScriptのエラーログとコンソールで、解析エラーがないかどうかを確認します。コードをステップ実行して実行方法を確認するブレイクポイントはありません。あなたが理解できない特定のものを見つけたら、それについて自由に質問してください。

また、あなたが呼び出す場所ではなく、Webサービスにエラーがあると考えてください。

+0

Webサービスは単独で動作します。また、私はInternet Explorerでそれを使用して呼び出すとき、私のデータベースから適切なデータを返します。しかし、私はサファリでそれを実行すると、それはおそらくxmlリクエストがサファリで別々に送られると推測しているので、ajaxメソッドを呼び出さないのですか? – theNoobProgrammer

0

SafariはIEまたはChromeよりも安全です。 safariはサービスを呼び出しているサーバーの証明書が必要なので、クロムまたはIEで簡単に実行できます。 MacまたはiPhoneで実行する場合は、そのサーバの証明書を作成することを確認してください。

関連する問題