ee3a84w
Thursday, January 8, 2009

{SOLVED] :how do you override Ext.lib.Ajax?

  • i need to override it for serailizeForm Method. It have me error on origclass.protoype undefined.

    override : function(origclass, overrides){
    if(overrides){
    var p = origclass.prototype;
    for(var method in overrides){
    p[method] = overrides[method];
    }
    }
    },


    p has no properties
    [Break on this error] p[method] = overrides[method];
    Thanks.


  • y


  • How do you override config?...i know it is not a class...i need to override it or have to hack that ext-base file...that is bad way.... need more user control....

    all i want is how to achieve my goal without hacking actual file..Thanks in advance.:)


  • This will help during debug times to see what kind of keys there and test things...

    All disabled fields will be moved to hidden field during production...time.:)

    http://farm4.static.flickr.com/3069/2505829047_a703b69836_b.jpg


  • You don't say


    var foo = new Ext.lib.Ajax();
    foo.doWhatever();


    Do you?

    So it's not a class is it?

    So it has no prototype.

    It just has properties which you can set as you wish.


  • Original


    Ext.lib.Ajax = {
    ....

    serializeForm : function(form) {
    if(typeof form == 'string') {
    form = (document.getElementById(form) document.forms[form]);
    }

    var el, name, val, disabled, data = '', hasSubmit = false;
    for (var i = 0; i < form.elements.length; i++) {
    el = form.elements[i];
    disabled = form.elements[i].disabled;
    name = form.elements[i].name;
    val = form.elements[i].value;

    if (!disabled && name){
    switch (el.type)
    {
    case 'select-one':
    case 'select-multiple':
    for (var j = 0; j < el.options.length; j++) {
    if (el.options[j].selected) {
    if (Ext.isIE) {
    data += encodeURIComponent(name) + '=' + encodeURIComponent(el.options[j].attributes['value'].specified ? el.options[j].value : el.options[j].text) + '&';
    }
    else {
    data += encodeURIComponent(name) + '=' + encodeURIComponent(el.options[j].hasAttribute('value') ? el.options[j].value : el.options[j].text) + '&';
    }
    }
    }
    break;
    case 'radio':
    case 'checkbox':
    if (el.checked) {
    data += encodeURIComponent(name) + '=' + encodeURIComponent(val) + '&';
    }
    break;
    case 'file':

    case undefined:

    case 'reset':

    case 'button':

    break;
    case 'submit':
    if(hasSubmit == false) {
    data += encodeURIComponent(name) + '=' + encodeURIComponent(val) + '&';
    hasSubmit = true;
    }
    break;
    default:
    data += encodeURIComponent(name) + '=' + encodeURIComponent(val) + '&';
    break;
    }
    }
    }
    data = data.substr(0, data.length - 1);
    return data;
    },

    This is what i changed...thinking i can override


    Ext.override(Ext.lib.Ajax, {
    serializeForm : function(form) {
    if(typeof form == 'string') {
    form = (document.getElementById(form) document.forms[form]);
    }

    var el, name, val, disabled, disabledPost, data = '', hasSubmit = false;
    for (var i = 0; i < form.elements.length; i++) {
    el = form.elements[i];
    disabled = form.elements[i].disabled;
    disabledPost = form.elements[i].disabledPost;
    name = form.elements[i].name;
    val = form.elements[i].value;

    if ( !(disabled ^ disabledPost) && name){
    switch (el.type)
    {
    case 'select-one':
    case 'select-multiple':
    for (var j = 0; j < el.options.length; j++) {
    if (el.options[j].selected) {
    if (Ext.isIE) {
    data += encodeURIComponent(name) + '=' + encodeURIComponent(el.options[j].attributes['value'].specified ? el.options[j].value : el.options[j].text) + '&';
    }
    else {
    data += encodeURIComponent(name) + '=' + encodeURIComponent(el.options[j].hasAttribute('value') ? el.options[j].value : el.options[j].text) + '&';
    }
    }
    }
    break;
    case 'radio':
    case 'checkbox':
    if (el.checked) {
    data += encodeURIComponent(name) + '=' + encodeURIComponent(val) + '&';
    }
    break;
    case 'file':

    case undefined:

    case 'reset':

    case 'button':

    break;
    case 'submit':
    if(hasSubmit == false) {
    data += encodeURIComponent(name) + '=' + encodeURIComponent(val) + '&';
    hasSubmit = true;
    }
    break;
    default:
    data += encodeURIComponent(name) + '=' + encodeURIComponent(val) + '&';
    break;
    }
    }
    }
    data = data.substr(0, data.length - 1);
    return data;
    }
    });


  • Ext.lib.Ajax is a singleton. Hack away at it with a simple:

    Ext.lib.Ajax.serializeForm = function(form) { .... }


  • Oi..

    That works!. Now when i do not want i just remove the override..for the disabled...atleast this helps during debugging....

    See ..i did n't know all the syntax to change things....

    Thanks again hendrix...:)


  • Ok basic question...how do i override serializeform ...that is all i need to know...

    I thought i can override Ext.lib.Ajax to achieve that...

    I don't want to change the original file...that will be a mess if start to go one the road...:D

    Lets talk in this thread so other newbie like me able to use it...







  • #If you have any other info about this subject , Please add it free.#
    Your name:
    E-mail:
    Telphone:

    Your comments:


    If you have any other info about {SOLVED] :how do you override Ext.lib.Ajax? , Please add it free.