Hey guys, I found a small bug in the ajax function when you pass in field input names like "field[location]" or "blog[id]".
So, if I have a form that looks like: <input type="text" name="query" value=""> <label class="control-label" for="searchSource">Search Source:</label> <select type="text" name="searchSource"> <option value="resumes" selected="selected">Resumes</option> <option value="openWeb">Open Web</option> </select> <label class="control-label" for="location">Location:</label> <input type="text" name="field[location]" value=""> <label class="control-label" for="experience">Experience:</label> <input type="text" name="field[experience]" value=""> <label class="control-label" for="education">Education:</label> <input type="text" name="field[education]" value=""> And I pass all the input field names through ajax(u, t, s) in an array to parameter t: var t = [ 'query', 'searchSource', 'field[location]', 'field[experience]' ]; This function fails to execute (located in app_name/static/js/web2py.js) function ajax(u,s,t) { query = ''; if (typeof s == "string") { d = jQuery(s).serialize(); if(d){ query = d; } } else { pcs = []; if (s != null && s != undefined) for(i=0; i<s.length; i++) { q = jQuery("[name="+s[i]+"]").serialize(); if(q){pcs.push(q);} } if (pcs.length>0){query = pcs.join("&");} } jQuery.ajax({type: "POST", url: u, data: query, success: function(msg) { if(t) { if(t==':eval') eval(msg); else if(typeof t=='string') jQuery("#"+t).html(msg); else t(msg); } } }); } More specifically, this line: q = jQuery("[name="+s[i]+"]").serialize(); To fix, add single quotes around s[i], like this: q = jQuery("[name='"+s[i]+"']").serialize(); --