2011-08-05 39 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盎司杜松子酒,一罐补品,你会很好!