2011-08-05 40 views
1

我已經創建了一個名爲「Service1.svc」的WCF ajax支持的Web服務「我必須在另一個使用Jquery的應用程序中調用此服務。 我在它的方法創建:Jquery Ajax調用WCF ajax啓用Web服務不能在Firefox上工作

[OperationContract]    
    public string GetMarkup() 
    { 
     string data = "<div>My HTML markup text here</div>"; 
     return data; 
    } 

現在我已經創建了我的第二個應用程序的HTML頁面jQuery腳本:

var markup = ""; 
$.ajax({ 
    type: "POST", 
    url: "http://localhost:1676/MyWCFService.svc/GetMarkup", 
    contentType: "application/json", 
    data: "{}", 
    dataType: "json", 
    success: callback,   
    error: function (textStatus) { 
     alert("ERROR"); 
    } 
}); 
function callback(result) { 
    alert("Inside Callback"); 
    markup = result.d; 
    $("#divMyMarkup").html(markup); 
    alert(markup); 
} 

現在,我的問題是,每當我執行此頁面IE的工作正常。 但在Firefox中不起作用。它給出了在上面的ajax調用中在 error: function (textStatus) {alert("ERROR");}中定義的警報錯誤消息。我試過使用$ .get(),$(「#divMyMarkup」)。load(serviceUrl,callback)這個功能。 我也試過通過改變數據類型爲json,jsonp,html。 我仍然沒有得到確切的解決方案。

這裏的任何專家?

+0

爲什麼不提示錯誤回調中的textstatus參數而不是字符串。 textstatus的內容可能會對你有所幫助,你也可以使用提琴手來查看xhr調用是否實際完成了嗎?它是否以200的狀態響應?您的網頁是否使用相同的網址和端口?你是否因同樣的原產地政策而受到污染? – redsquare

+0

當獲取請求時,它給出「405方法不允許localhost:1676」在Firefox和錯誤:未定義的警報消息。 –

+0

聽起來像你正在對我進行跨域呼叫。你說'我的第二個應用程序'是你在做Ajax調用的地方。只是將數據類型更改爲'jsonp'不會使其工作。你在這裏進行跨域呼叫嗎? –

回答

3

在另一個應用程序的使用jQuery

以我的經驗,IE不會尊重跨域策略,讓你做的呼叫,而不是一個參考......

唯一找出方法是讓你的HTML頁面/ JQuery腳本在Firefox上調用你的WCF服務,從http://localhost:1676/ICallWcfServicesWithJQuery.html

可能的解決方案:

在多種瀏覽器上測試,添加1盎司杜松子酒,一罐補品,你會很好!