I've decided to being a slightly ambitious project. Like Drupal before, I'm trying to create a CMS using JQuery for some of the client side functionality. At the moment I'm just trying to write the underlying RPC calls using JSON-RPC (v1.1) (Yes I know its still a working draft, but I'm trying to get ahead of the game).
I have a weird issue occuring when I make the AJAX call. Using Firefox, it works as one would expect. But using IE 6, the same call fails. Chucking in some debugging alerts, and things in, I see that IE is actually returning a readyState of 4, and a status code of 200... Yet the error event is still being triggered. When I run a packet sniffer on the web server, I see the session happen correctly, with the status code of 200. Any one got any ideas of what I'm missing? The source looks like this... jQuery.extend({ jsonrpcSettings: { type: "POST", timeout: 5000, url: null, data: null, callback: function() {} }, jsonrpcCall: function( s ) { s = jQuery.extend({}, jQuery.jsonrpcSettings, s); if (( !s.url || s.url===null ) || ( !s.data || s.data===null )) { alert("URL or data is missing!"); return false; } if ( s.callback !== null && !jQuery.isFunction(s.callback)) { return false; } /* try { netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead"); } catch (e) {} */ jQuery.ajax({ url: s.url, type: s.type, contentType: "application/json", data : s.data, dataType: "json", beforeSend: function(xhr) { xhr.setRequestHeader("Accept", "application/json"); }, global: false, timeout: s.timeout, success: function (data) { alert("It worked!!"); }, error: function (xhr, status, expobj) { alert("It DIED!! Horribly"); }, complete: function(xhr, status) { alert("Complete [" + status + "]"); alert("Status code [" + xhr.status + "]"); alert("ReadyState is [" + xhr.readyState + "]"); for(elem in xhr) { alert( elem + " = " + xhr[elem]); } } }); return true; } }); And the call for the function is... $(document).ready(function(){ var srvCall = { url: "http://webserver:8888/development/ services.cgi", data: { "version" : "1.1", "method" : "echo", "params" : { echo: "hello echo" } }, callback: function() { alert("Done?"); } }; try{ $("#JSONRPCTest").click( function() { $.jsonrpcCall(srvCall); }); } catch(e) { } }); JSONRPCTest is the ID for a div object.