On Aug 20, 6:59 am, MorningZ <morni...@gmail.com> wrote:
> "Does anyone know what is wrong? I've never seen an ordinary function
> behave this way. "
>
> That's because $.post (and the resultant $.ajax) isn't "ordinary",
> it's an asynchronous call and when you hit the line
>
> jsonData = eval('(' + data + ')');
>
> the script isn't back from the post call yet....
>
> you need to learn about callbacks to better your code to take full
> advantage of async behavior
>
> another tip, if you are doing a post and looking to get back JSON,
> then use something like:
>
> var Options = {
> type = "POST",
> url = "save_search.php",
> processData = true,
> data = formData,
> dataType = "json",
> success = SaveSearch_Success,
> error = SaveSearch_Error};
>
> $.ajax(Options);
>
> and outside all that, here are your functions "outside" the ajax call
>
> function SaveSearch_Success(data) {
> // data = your result in JSON already};
>
> function SaveSearch_Error(x,y,z) {
> // x.responseText will have server side error message
>
> };
How does this get around the asynchronous problem though? If I try to
put and use the JSON object outside of SaveSearch_Success, won't I
hit the same problem I already have?