I've just spotted it after debugging it in Firebug.

Anything which requires having a response for it to execute correctly, must
be in the response-handling function.
This is behaving exactly as required - the request is asynchronous, and you
cannot guarantee that it will execute after the code that comes after it.

The checkEmailDups() function cannot tell you the value without having to
wait block execution until the response is received. Far better would be to
send the check, and handle both cases within the callback function instead.
This will also allow you to remove the (horrible) global variable.

function checkEmailDups(myemail) {
  $.post("checkemail.cfm", { email: myemail }, function(data) {
     if ($.trim(data) === "available") {
        // allow whatever action is being performed
     }
     else if ($.trim(data) == "taken") {
        alert("That email address is taken");
     }
  });
}

--rob

On 7/19/07, bdee1 <[EMAIL PROTECTED]> wrote:



ok i may have figured out why this is happening.
i put replaces alert(dupsfound) with setTimeout('alert(dupsfound)',3000)
so
that the script waited 3 seconds before displaying the alert and then it
displayed the correct value

so the key is that it IS settign the value properly but it just takes a
minute for the post to complete.

so.... the next question is, how do i prevent the rest of the function
from
running until the post is finished?



Rob Desbois-2 wrote:
>
> That should work if errorsFound is global - can you provide your code or
> give us a link to look at?
> --rob
>
> On 7/19/07, bdee1 <[EMAIL PROTECTED]> wrote:
>>
>>
>>
>> i am building a function to validate a registration form for my site.
>> one
>> of
>> the things i need to validate is that the email address entered into
the
>> form does not already exist in the database.
>>
>> in my formValidate function i perform several tests.  if a test fails i
>> increment a errorsFound variable.  at the end of my function if
>> errorsFound
>> is greater than 0, i do not submit the form.
>>
>> the test for my email field does a $.post to a checkEmail - a page that
>> checks the database for duplicate email addresses.  then my callback
>> function looks st the results of the post - if duplicates were found, i
>> increment my errorsFound variable.
>>
>> problem is that from within my $.post callback function i cannot seem
to
>> access my errorsFound variable.
>>
>> how can i get my post callback function to increment my errorsFound
>> variable?
>> --
>> View this message in context:
>>
http://www.nabble.com/changing-the-value-of-a-global-variable-inside-an-post-callback-function--tf4111860s15494.html#a11691585
>> Sent from the JQuery mailing list archive at Nabble.com.
>>
>>
>
>
> --
> Rob Desbois
> Eml: [EMAIL PROTECTED]
> Tel: 01452 760631
> Mob: 07946 705987
> "There's a whale there's a whale there's a whale fish" he cried, and the
> whale was in full view.
> ...Then ooh welcome. Ahhh. Ooh mug welcome.
>
>

--
View this message in context:
http://www.nabble.com/changing-the-value-of-a-global-variable-inside-an-post-callback-function--tf4111860s15494.html#a11693506
Sent from the JQuery mailing list archive at Nabble.com.




--
Rob Desbois
Eml: [EMAIL PROTECTED]
Tel: 01452 760631
Mob: 07946 705987
"There's a whale there's a whale there's a whale fish" he cried, and the
whale was in full view.
...Then ooh welcome. Ahhh. Ooh mug welcome.

Reply via email to