My challenge is to access a remote server with a webhttpbinding using JavaScript.
Here's a simple JavaScript function that runs the test function, a random number generator that returns a number:
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);
}
}
}
When I run this function in IE9, I get {d: 6} or something similar, but in Chrome or Firefox 5, the alert shows up empty.
Changing xmlHttp.responseText to xmlHttp.responseXML in IE gives me [Object], while in Firefox 5 and Chrome it's null.
Does anyone have suggestions on making this work on all modern browsers?
UPDATE: Fiddler Results Chrome:
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