我有一個webhttpbinding的遠程服務器,我想訪問使用JavaScript。我有一個JavaScript端點,只能在IE瀏覽器的WCF服務
下面是一個簡單的javascript函數,它執行測試函數,它只是一個隨機數生成器,它返回該數字。
Function DoTest()
{
var xmlHttp = new XMLHttpRequest();
var url = "location/to/service/service.svc/ajax/";
url = url + test;
var body = '{ }';
xmlHttp.open("POST", url, true);
xmlHttp.setRequestHeader("Content-type", "application/json");
xmlHttp.send(body);
xmlHttp.onreadystatechange=function(){
if(xmlHttp.readyState == 4){
alert(xmlHttp.responseText);
}
}
}
當我執行在IE9這個功能,我得到{d:6}或什麼,但是當我嘗試執行在Chrome或Firefox 5相同的功能,它使我警覺與它沒有任何文字。
當我將xmlHttp.responseText更改爲xmlHttp.responseXML,即我得到[Object]並在Firefox 5和Chrome中結果爲空。
有沒有人知道我能做些什麼才能使它適用於所有現代瀏覽器?
UPDATE:提琴手結果 鉻:
OPTIONS http://www.address.com/service.svc/ajax/add HTTP/1.1
Host: www.address.com
Connection: keep-alive
Access-Control-Request-Method: POST
Origin: null
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.112 Safari/534.30
Access-Control-Request-Headers: Content-Type
Accept: */*
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
IE 9
POST http://www.address.com/service.svc/ajax/add HTTP/1.1
Accept: */*
Content-Type: application/json
Accept-Language: en-us
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
Host: www.address.com
Content-Length: 17
Connection: Keep-Alive
Pragma: no-cache
Cookie: ASP.NET_SessionId=m54ult1lvdqj0yeb3nm4dz4w
{"x":123,"y":332}
FF:
OPTIONS http://www.address.com/service.svc/ajax/add HTTP/1.1
Host: www.address.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:7.0a1) Gecko/20110617 Firefox/7.0a1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Origin: null
Access-Control-Request-Method: POST
Access-Control-Request-Headers: content-type
Pragma: no-cache
Cache-Control: no-cache
那麼,你是對的,我現在在瀏覽器之間得到了更一致的行爲。不幸的是,它不是一個好方法。我現在得到了所有的瀏覽器,包括即給我什麼也沒有。 萬一這個問題,我修改我的wcf webinvoke行看起來像這樣[WebInvoke(Method =「POST」,BodyStyle = WebMessageBodyStyle.Wrapped,ResponseFormat = WebMessageFormat.Json)] – TheNewM
得到它的工作與ie再次基本複製和粘貼+與我的服務相關的所需更改(從示例中,但沒有Chrome或Firefox的運氣)......它們仍然給我輸出null或空字符串。 – TheNewM
您可以看看Fiddler,看看Chrome/FF/IE發送的請求有什麼不同嗎? – carlosfigueira