Shawn,

I have fixed my problem!  It now works 100% of the time.

1) Tested it and it worked every time so no problems there

2) Removed it and there was no change, still had the problem

3) Check

4) Made those changes and also used the empty() function and no
change, still had the problem

Extra Stuff: I changed my php function to the following:

function get_clients()
{
        $c = new Client();
        $q = strtolower($_POST['q']);

        if (empty($q))
                return;
        $c->like('name', $q)->get();
        foreach ($c->all as $client)
        {
                echo "$client->name|$client->id\n";
        }
}

It still didn't work but I found that it was a lot more efficient,
which is always better!

The thing I found that made it so it wouldn't work until I tabbed off
and then tabbed back on again was calling the following line of jQuery
code before I initialized the autocomplete:
$('#client_name').focus();
I put that at the end of my codeblock and just like magic, everything
worked smoothly :).  So let that be a lesson to myself heh.

Thanks again for all your suggestions and your help on this!  I
wouldn't have figured that out as fast as I did without the suggestion
of returning "Nothing|0" because the autocomplete didn't even return
that heh.  Made me realize that it was something else in my code other
than the php and autocomplete script.  Anways, have a great day!

Best Regards,
cody


On May 20, 7:52 am, MeanStudios <cody.lundqu...@gmail.com> wrote:
> Thank you very much for your reply! Lots of great ideas :).
>
> I will let you know how it all turns out.
>
> As for using the database to do the filtering, that is a great idea!
> Yes, I have full control over the client class so it shouldn't be a
> problem.
>
> Best Regards!
>
> On May 20, 7:45 am, Shawn <sgro...@open2space.com> wrote:
>
> > I don't see anything tooo odd here.  Here's what I would suggest though:
>
> > 1. Call the autocomplete function a few times manually.  Put the URL to
> > it in the browser's address bar and load the page a few times (you'll
> > need to switch your code to use $_GET though).  Try to mix up the speed
> > of reloads, the data being passed, etc.  IF you see any blank pages,
> > then you know the server side code is where the problem is at.  But if
> > you always see output, continue debugging....
>
> > 2. Temporarily remove the .result() method just to ensure that is not
> > causing confusion somewhere.  Commenting it out should be good enough.
>
> > 3. Make sure you are using the most recent stable version of the plugin.
>
> > 4. In your PHP code, where you are checking for no 'q' value and just
> > exit the function.... replace that return with something like
>
> >    echo "no criteria|0";
> >    return;
>
> > Just to see if this condition is the problem area.  Also, I'd probably
> > change the condition to be   if (empty($q))  - which is a slightly
> > better check.  That's a style thing though, so up to you....
>
> > Now, with that out of the way...  Your PHP code seems odd to me.  Why
> > pull back ALL clients and then do a string comparison to sort out what
> > to show or not?  It is MUCH faster/more efficient to let the database do
> > that filtering for you.  Do you have control of the Client class?  If
> > so, can you add a search method that takes the 'q' value as a criteria
> > for the name?  But, the code as is *should* run, so take my comments as
> > constructive observations... :)
>
> > Shawn
>
> > MeanStudios wrote:
> > > Shawn, yes, that is the plugin I am talking about.  In Jorn's blog
> > > post on Autocomplete he said to post here with [Autocomplete] in the
> > > subject if having problems.
>
> > > Here's the code I'm using:
>
> > > $("#client_name").autocomplete("/ac/get_clients/", {
> > >    scroll: true,
> > >    scrollHeight: 300,
> > >    autoFill: true,
> > >    cacheLength: 1,
> > >    max: 20,
> > >    matchContains: false
> > > });
>
> > > I also have a .result(function(){}); running after that as well so I
> > > can populate a form with the returned data from the autocomplete.
> > > I'm using CodeIgniter as my php framework utilizing a library called
> > > DataMapper which is an implementation of an ORM.  Here's the function
> > > I'm using to return the data:
>
> > > function get_clients()
> > > {
> > >    $c = new Client();
> > >    $c->get();
> > >    $q = strtolower($_POST['q']);
> > >    if ( ! $q)
> > >            return;
> > >    foreach ($c->all as $client) {
> > >            if (strpos(strtolower($client->name), $q) !== false) {
> > >                    echo "$client->name|$client->id\n";
> > >            }
> > >    }
> > > }
>
> > > On May 19, 5:36 pm, Shawn <sgro...@open2space.com> wrote:
> > >> There are a few different autocomplete plugins out there.  I'll assume
> > >> you are using the one found 
> > >> athttp://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/(which
> > >> is the one documented at docs.jquery.com)  The author, Jorn Zaefferer,
> > >> is on this list often....
>
> > >> I've seen oddities like this with the plugin, but it pretty much always
> > >> was a problem in how I was implementing the plugin.  Or a potential
> > >> problem with my server side code or local network.  But I tend to do
> > >> more than the absolute basics too, so I always assume it's my fault
> > >> first.. :)
>
> > >> Short of seeing some sample code, I'm not sure how much more I can help
> > >> out... But hope that points you towards the solution somewhat.
>
> > >> Shawn
>
> > >> MeanStudios wrote:
> > >>> Greetings,
> > >>> I'm currently using this awesome plugin for my web app but I'm having
> > >>> a bit of an annoying bug with it.  It sometimes does not pull up any
> > >>> results when typing in.  Like if I have something in the database with
> > >>> the name "March" and I type in "mar" it shows the little loading.gif
> > >>> but then disappears and doesn't give me any results.  If I tab away
> > >>> and come back to it and try it again, then it will work.  And even
> > >>> that doesn't make it work.  Sometimes I have to totally refresh the
> > >>> page.  I thought it might be the cache mechanism so I turned that off
> > >>> setting "cacheLength" to "1".
> > >>> Any other ideas as to why it sometimes works and sometimes doesn't?

Reply via email to