Ajax.NET Professional Changes ============================= Version 6.7.20.1 - Fixed JavaScriptArray bug when deserializing json [["..."],["..."]]. Version 6.7.19.1 - Fixed bug when AjaxMethod is using IJavaScriptObject as argument type. - Removed ReflectionPermission security attribute from assembly meta data to run in medium trust web applications. Version 6.7.11.1 - Added generic method JavaScriptDeserializer.DeserialzeFromJson( string ); Version 6.7.10.2 - Added stand-alone JSON library to use JSON without Ajax. Version 6.7.10.1 - Fixed if using properties instead of public fields, comma removed. Version 6.7.9.1 - Added support for new Date parsing for Deserialize(). Version 6.7.2.1 - Fixed IFrame support for disabled ActiveX in IE. - Added full support for all IE7 configurations. Version 6.6.30.1 - Fixed onLoading on document.onunload. Version 6.6.29.2 - Fixed onLoading that has been called three times instead of two times. Version 6.6.29.1 - Fixed "work off-line" mode on Internet Explorer. - Fixed general errors in Firefox, Mozilla (Firefox and "[Exception...") Version 6.6.28.1 - Fixed onError call on every callback. Will call the method only if res.error != null. Version 6.6.26.1 - Fixed wrong Content-Type header value in XMLHttpRequest request. Version 6.6.23.1 - Fixed missing inheritance for DataRow, too. This will fix the problem with type-safe DataSets. Version 6.6.22.1 - Fixed missing inheritance for DataSet, DataTable and DataView. Version 6.6.20.1 - Added JavaScriptUtil.GetIJavaScriptObjectFromXmlNode(XmlNode) to get a JSON representation from XmlDocument, see http://developer.yahoo.com/common/json.html#xml. - Fixed JavaScript timeout, added new return value to indicate if request should be canceled or not (note: don't use Fiddler to capture this effect, Ethereal will show real data). - Added JavaScriptSource as new IJavaScriptObject that can return any JavaScript code (i.e. new JavaScriptSource("new MyClass()");) Version 6.6.14.2 - Fixed IDictionary support as AjaxMethod argument. - Changed IDictionary and NameValueCollection use on client-side JavaScript. Use following methods of res.value: .getValue(key) .getKeys() .setValue(key, value) .add(key, value) Version 6.6.14.1 - Fixed missing onLoading(false) when request running longer than AjaxPro.timeoutPeriod. - Return true in onTimeout if you want to cancel the request, otherwise the onTimeout will be invoked after AjaxPro.timeoutPeriod again. First argument for onTimeout is the duration time in milliseconds, the second on is the request with following properties and functions: .context, .method, .args, .abort(), .xmlHttp Version 6.6.13.2 - Added Pocket PC 2003 support. - Internet Explorer 4 will not support XMLHttpRequest. There is a version available of Internet Explorer where the ActiveXObject is installed, but not on every IE 4 it is available. Due there is missing try..catch support, and a lot of other features missing I will not make Ajax.NET Professional available for Internet Explorer 4 at all. - Fixed gzip/deflate but for clients not accepting compression. Version 6.6.13.1 - Fixed NameValueCollection bugs. Version 6.6.12.1 - Added Windows Mobile 5 (Pocket PC) support. - Removed all addNamespace calls in JavaScript code. - Moved addNamespace function to ms.ashx, if you need it copy&paste it or activate the ms.ashx include. - Fixed bug if converter already exists in internal list. - Added String.prototype.split. - Added new Initialize method to IJavaScriptConverter that will use an StringDictionary for converter configuration, removed old one!! - Changed AsyncHttpHandler code, will add more configuration later. - Added res.duration for JavaScript callback. - Fixed bug using cache attribute, didn't store differenct cache if parameters are different. Version 6.6.8.2 - Fixed bug when request fails should not call timeout handler. Version 6.6.8.1 - Fixed missing /* on cached results. Version 6.6.7.1 - Removed Obsolete(true) for RegisterConverterForAjax. - Changed HttpHandlers to internal. - Added new urlNamespaceMappings/allowListOnly attribute for security reasons. Version 6.6.6.1 - Added HttpCompressionModule. - Fixed wrong ContentType for IFrameProcessor if cached. - Fixed modSince http header bug. Version 6.6.5.2 - Fixed old Firefox bug with http response headers. Version 6.6.2.2 - Fixed AjaxServerCache attribute use, didn't cached it for each method. - Fixed HTTP 100 Continue problem when running with Win2003 Server (RFC 2616). Version 6.6.2.1 - Added BitmapConverter. - IJavaScript objects new ctor added. Example: AjaxPro.JavaScriptObject o = new AjaxPro.JavaScriptObject(); o.Add("firstName", new AjaxPro.JavaScriptString("Michael")); o.Add("age", new AjaxPro.JavaScriptNumber(29)); o.Add("isMarried", new AjaxPro.JavaScriptBoolean(true)); o.Add("x", new AjaxPro.JavaScriptNumber(2.3456)); o.Add("y", new AjaxPro.JavaScriptArray(new AjaxPro.IJavaScriptObject[] { new AjaxPro.JavaScriptBoolean(true), new AjaxPro.JavaScriptNumber(2.33) })); return o; - Fixed missing IJavaScriptObject serializer, added generic support for internal stuff. - AjaxPro.timeoutPeriod is now set to 10 seconds by default. - Removed MS.Position, MS.Keys, MS.setText, MS.setHtml, MS.cancelEvent, MS.getEvent, MS.getTarget,... to ms.ashx, enable with ajaxNet/ajaxSettings/oldStyle/includeMsPrototype. - Completly removed $(...), Class.create: Object.extend(window, { $: function() { var elements = new Array(); for(var i=0; i if .NET 2.0. - New AjaxNoTypeUsageAttribute wich you can add to custom classes. This will prevent the engine to add the __type JavaScript property, so it is a one-way communication for this type only. - Changed IJavaScriptConverter interface, added protected variable m_AllowInheritance to allow searching for the same type in inherited classes. This is false by default, used in IListConverter with true. Added two new methods TrySerializeValue and TryDeserializeValue to do some more test insetad of only comparing the Type. New property ConverterName which will be written to converter.ashx JavaScript file. - Added ajaxNet/ajaxSettings/oldStyle/allowNumberBooleanAsString tag to allow posting JavaScript number and boolean as string. If not configured JavaScript numbers are converter to System.Int64 and boolean to System.Boolean. - prototype.ashx and core.ashx can be combined to "prototype-core.ashx", which will save one http request. - Added ajaxNet/ajaxSettings/oldStyle/sessionStateDefaultNone tag to set default HttpSessionStateRequirement to None instead of new default ReadWrite. This is necessary to don't forget to set it and to keep-alive the session state on the web server. - Added support for Enum that are not using Integer. - Added new prototype function like MS.Position.setPosition, MS.Keys.getCode, MS.cancelEvent, MS.getEvent, MS.getTarget, MS.setText, MS.setHtml. Will be replaced by prototype.js!! - Fixed bug when using AjaxNamespace: now it will search first all AjaxNamespaces defined for methods, if nothing found use the MethodInfo.Name. - Some code changes to improve performance. Version 6.5.18.1 - Fixed prototype StringBuilder class. Version 6.5.17.1 - Fixed enum support, now supporting other types than int. - Removed try..catch when invoking callback function. - Fixed old Hashtable support, will be change in future versions. Version 6.5.16.1 - Changed window.$, only add this function if not already implemented (script.aculo.us effects, prototype.js). - Fixed bug in IDictionaryConverter, now supporting any generic IDictionary, too. (new object Ajax.Web.Dictionary, different properties and methods!) Version 6.5.15.2 - Fixed non-ActiveX support for Internet Explorer 5.0. Version 6.5.15.1 - Removed Function.prototype methods bindToEvent, removeFromEvent, bindAsEventListener. - Added Function.prototype apply, Array.prototype clear and shift to support Internet Explorer 5.0. Version 6.5.12.1 - Added StringBuilder for JavaScript using arrays to speed up string concatenation. Version 6.5.9.1 - Fixed Content-Length bug in Netscape 7.0. - Current version tested on following web browsers: - Internet Explorer 7.0.5346.5 (Beta 2) - Internet Explorer 6 - Firefox 1.5.0.3 - Firefox 1.0.1 - Opera 8.5 - Netscape 8.1 (based on Firefox) - Netscape 7.0 I will do more testing for older web browsers, I need an old Windows 2000 installation first. ;) - Fixed if there are ambiguous methods, now the first AjaxPro.AjaxMethod marked method will be used; threw an exception earlier. - Throw NotSupportedException if type could not be loaded, mostly after installed new files and AssemblyQualifiedName has been changed used on long running web pages. Note: every file change in App_Code folder, any code behind file or web.config will create a new assembly name for these classes. There is a workaround available; the prefered way is to use libraries instead with a fixed assembly name. - Fixed Server.Transfer bug (see 6.4.28.1). - If .NET 2.0 classes in App_Code folder will be using the shortcut type information for reflection like "Namespace.Classname,App_Code". This will help to fix the problem above. You can use the urlNamespaceMappings configuration for App_Code classes now, too. To disable this new feature add a tag to web.config ajaxNet/ajaxSettings/oldStyle. Version 6.5.5.1 - Mozilla/Firefox bug, if the header does not exists the browser will throw an exception, removed res.isCached. Version 6.5.4.1 - Fixed bug for Express Web Developer Edition when method does not have any argument, seems to be a WebDev.WebServer.EXE bug. - Initial version of WebAjaxErrorEvent to log excpetions during AJAX calls. Version 6.5.3.1 - Fixed use of JavaScript arguments for onError, onTimeout, onStatChanged. - Added String.isNullOrEmpty and Function.isFunction in prototype.js. - Added AjaxPro.queue.abort to stop running requests. - Changed encoding to UTF-8 on request and response. Version 6.4.29.1 - Fixed IFrame support, using JavaScript objects, res.value=null and exceptions are serialized correct, now. - Added new AjaxPro.noActiveX = true|false. Will use IFrame instead of ActiveX if window.XMLHttpRequest is not implemented. - Added JavaScriptUtil.ConvertXmlToIJavaScriptObject and fixed older method JavaScriptUtil.ConvertIJavaScriptObjectToXml (save IJavaScriptObject) to XML. - Added System.Web.HttpContext.Current.Items[Utitlity.AjaxID + ".JSON"] which will hold the original JSON request as a string (see: example.aspx) - Fixed IJavaScriptObjects Value property and ToString. - AjaxPro.toJSON removed blanks in JSON string. - window.XMLHttpRequest will be created on first invoke instead while running the initialize method. - Added new examples for DataView, JSON conext item, convert JSON to xml. Version 6.4.28.1 - Fixed missing getResponseHeader function for IFrame use. - Fixed wrong DataView use. - Added new property res.isCached if result has been cached on the server. (see: [AjaxPro.AjaxServerCache(10)]) - Changed http header names from Ajax-* to AjaxPro-* example: Ajax-method -> AjaxPro-Method - Removed multiple Pre_Render events. Version 6.4.27.1 (beta) - Fixed null values to DBNull.Value for System.Data.DataTable. - Fixed memory leak with HybridDictionary for JavaScript include rendering. Version 6.4.26.2 - Fixed Nullable support for method arguments. Version 6.4.26.1 - Added missing enum support for method arguments. - New test methods in example.aspx need App_Code\enumtest.cs. - Changed ProfileService, returns now the Profile object. You can access the properties using res.value.MyProperty (name of the property configured in web.config). To set a property use res.value.setProperty("MyProperty", "Hello world!"). Setup Profile in your web.config like this example: function demo_profile() { var x = AjaxPro.Services.Profile.GetProfile().value; alert(x.MyProperty); x.setProperty("MyProperty", "Hello world!"); alert(x.MyProperty); } Use AjaxPro.Utility.RegisterTypeForAjax(typeof(AjaxPro.Services.ProfileService));. - Renamed property IAjaxprocessor.Method to AjaxMethod to be CLSCompliant. Version 6.4.25.2 - Fixed content type, changed back to "text/plain; charset=utf-8". Opera is not working with "application/json". - Fixed prototype.js MS.Browser.isIE for Opera. Version 6.4.25.1 - Fixed forms authentication cookieless configuration Version 6.4.16.1 - Changed content type of Ajax.NET requests: application/json; charset=utf-8 - Fixed type char when char is empty JSON string. - Fixed XmlDocument support, will return XMLHttpRequest.responseXML as res.value. - ICartService inital version, will add cart features to Ajax.NET Professional. Version 6.4.12.2 - Fixed \0 strings and chars, "" will be returned, now. Version 6.4.12.1 - Fixed deserializer for type Char. - Added new attribute for web.config/urlNamespaceMapping to enable AssemblyQualifiedName for use of assemblies in the GAC (strong named). For more details see example web.config. Version 6.4.11.1 - (beta) Added support of IHttpAsyncHandler to remove http request from pool while long-running methods are invoked. Use [AjaxMethod(true)]. - Fixed array deserializer, int[] or string[] is working, now. - Fixed ArrayList deserializer, using Int64 if JavaScriptNumber, Boolean if JavaScriptBoolean, else use .ToString(). - Added comment to the web.config to remove attributes from sectionGroup if you are using Microsoft .NET 1.1. - Changed example.aspx (.NET 2.0) to run several tests including generics. - Fixed core.js bug when http status not 200; res.error.Message contains the http statusText, now. Version 6.4.6.1 - Fixed core.js, requests stopped working if web server is unavailable or http status code was twice not 200. Thanks to Nick Connor. Version 6.4.5.2 - The prototype method Object.prototype.extend has been removed to get third-party JavaScript libraries work with Ajax.NET Professional. If you you are using the JavaScript method to extend your objects use following configuration in web.config: Below you will find the original functions for Object.extend and Object.prototype.extend: Object.extend = function(dest, source, override) { for(prop in source) { if(override || typeof dest[prop] == "undefined") dest[prop] = source[prop]; } return dest; } Object.prototype.extend = function(o, override) { return Object.extend.apply(this, [this, o, override != false]); }