JQuery :: How To Get Ajax Response Data To Outside Callback Function
Aug 19, 2009
I have Javascript code that looks like this:
var data1;
$.post('save_search.php', formData, function(data) {
data1 = data;
});
jsonData = eval('(' + data1 + ')');
if (jsonData.return_status.search("successful") > -1)
$('#msg_div').html("<font color=red>Search was saved</font>");
else
$('#msg_div').html("<font color=red>Search was not saved. Try saving again.</font>");
"data1" comes up as undefined in the statement
jsonData = eval('(' + data1 + ')');
Even though "data" is a perfectly correct JSON string *inside* the callback function! I can put the eval statement inside the callback function and it will form a good JSON object, like this:
jsonData = eval('(' + data + ')');
I'm simply trying to get my Ajax response data to the outside of my callback function so I can use it in other Javascript code. I've never seen an ordinary function behave this way.
I would like to send my form data to a php file but not to get any response. I want to send an ID so that PHP can do MySQL search and generate a PDF file. Problem seems to be that PHP is responding something back to HTML and that is messing my code. So I just want to send the data and run the scripit in PHP so that nothing is returned back to HTML.
The answer to my question is probably very simple, but I'm having trouble making this work.
I want to access a local csv file, rearrange it into an array, and use the data later in my script. The logic of this in psuedocode is [code]...
Since the massaged data are in the callback, they're not available at ***. I've tried declaring the variables outside the callback as shown, but this doesn't seem to work either. I'm thinking there must be an easier way. Is there?
<span style="font-family: courier new,monospace;">Hello all,</span><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">I've recently started with jQuery because I wanted to use it for posting details from an login form to a PHP script which should return whether the user is authenticated ox not.</span><br style="font-family: courier new,monospace;"> <br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">For this I use $.ajax, because of it's flexibility and I prefer to use it in this implementation. Reading (jQuery docs and examples) and searching a lot did not solve me on one issue: fetching the data in the callback to the global scope.
I have a page which loads the HTML for a table using $.post(). Sometimes, the table will be quite large (maybe 2000 rows). Is there a way to display the content as it arrives instead of waiting for the whole thing?It would probably be OK if this requires a synchronous request. The purpose of the page is to display the table, so it doesn't matter if nothing else can happen while it loads.
Is it possible to access the data arguments that are sent with the ajax function? Example:
$('#mycheckbox').click( function() { $.get( '/ajax.php', { nr: this.id }, function( data, textStatus ) { // Here I want to access the arguments I just sent with ajax.php
[Code]....
I could easily do $('#mycheckbox').attr('checked', 'checked'); but that is not what I want. Also I don't want to send the arguments with the response. Anyone knows a solution? I can't find it in the documentation of jQuery and not in the discussions here.
I have got my ajax file calling the php file properly and executing some code in it, but nothing will get returned with json_encode().
Right now I am skipping form validation and just trying to get a response back of any sort:
Currently my site just shows the 'processing...' string but will change my css class to indicate a sucess.
Here is my ajax calling the php file:
When I change .html(data.msg) to something like html("<p>hello world</p>") I get the string back. So this line is working, but just not recieving 'data.msg' from my php file.
I have a list where each list item has a click event attached to it. Upon clicking a list item, the click calls a PHP script and passes the list's title attribute as a parameter to the script. How can I take the data returned (some HTML) from the AJAX call and append it to the list item which was clicked? I know that the data variable contains the correct HTML coming back from the script and thought that $ (this).append(data) would work but it doesn't. I was thinking of calling another function from within the AJAX return function call, but don't know how to reference the list item which was originally clicked.
at the end of the animation, I'm trying to run a function that relates to 'i', but every time it represents the last possible number instead of a range
for (var i = 0; i < bubbleArray.length; i++) { var _this = bubbleArray[i] var mLeft = parseInt($(_this.div).css('margin-left').split('px')[0]);
I seem to be experiencing a character length cut-off with XMLHTTPRequest. I suspect this because the ActiveX .XMLHTTP works just fine for supporting IE. The data supposed to be recieved is a database outputting in an HTML table format. Any gecko based browser cuts off at about 4200 characters Code:
The goal is to change the source on the fly (as with a firefox extension webdev or another or even Greasemonkey) to add a link. Until then, easy does it work well. This link launches an application ajax jquery like: $.get(...) or even $.ajax(...)
If I'm on [URL], added my link, I click and it works, I see the ajax request and pass my "alert ()" gives me the return of application. Great! But if I'm on a site other than mine (the url of the ajax request is [URL] while I'm at [URL] for example), the return of the ajax request is empty.
I am trying to retrieve json data from the world bank's API, here's my code: <html> <head> <script src="[URL]"></script> <script type="text/javascript"> var theData; $(document).ready(function(){ $("button").click(function(){ $.ajax({ url: '[URL]', success: function(data) { /*this alert message does not show*/ alert(data); }, dataType: 'json' }); }); });
</script> </head> <body> <p></p> <button> Get World Bank Data </button> </body> The callback function is not executed but there is response when I checked it using firebug.
On a project I got stuck on this "problem". When you make a json (ajax) call. You also need a callback function. Which means I have to call the next $.getJSON within that callback function to read the next portion of data. In my opinion this is not very readable code...What I want is a nice and readable piece of code. Where you could just write it like this: var data1 = $.getJSON(..); var data2 =$.getJSON(..); I've found a solution here: [URL] (explains my problem perfectly). But it's not compatible with the getJSON story. Is there already a possibility to do this with the jquery library?
I've been hitting a strange bug where callbacks are not invoked when a JSON response is returned from an AJAX call under jQuery 1.4.1. I just upgraded my app; this was working perfectly pre-1.4.
I do specify the return type as "json" when I invoke $.post . When a simple JSON string like "false" is returned, the callback is invoked. It seems to fail with more complex types, specifically with JSON objects, i.e., {"a":1, "b":5} .
If it helps, I'm running Firefox 3.5 on Ubuntu. In my test environment, the only installed extension is Firebug.
I am using jquery.ajax() to make a POST call to web server which returns HTTP 201 response for successful creation of object at server. Since 201 is a success I expect the success function specified with jquery.ajax to execute but instead it executes the error function specified with jquery.ajax. Here is how I am using jquery.ajax call.
I have an ajax post which returns a large html response. It is getting truncated at 98784 characters everytime. Is there a limit to a response size or a way around this?
I have been trying to figure this out for a few days now and have finally come to the point where I think I got it but may just need a little push to get what I want.
Heres the situation:
I have this function that uses ajax to access a database and returns the results in the responseText. That part is working fine, I have confirmed that the responseText contains the information that I need
**************code***************************************** //new ajax already created and assigned to the variable xmlhttp// var response_recieved = "some data"; function get_answer(Table_Name, Field_Name, Data_Type) {
[Code]....
As evidence by my posting, this is not working correctly. The variable response_recieved is coming up undefined outside of the callback function assigned to the onreadystatechangeproperty.
Based on the information that I have gathered online from various forums, I believe this issue has to deal with a problem with closure in the callback function assigned to onreadystatechange property. I don't think it has any. Based on the fact that there is no anonymous function in that function. But my problem is that the call back function is anonymous itself... I think???
get the variable response_recieved to survive outside of this function.
I have a problem I have in my controller a function which poperly returns the value (i've checked by var_dump). When I try to access this data from $.ajax it returns nothing...
On clicking a thumbnail I'm getting it's corresponding image through $.ajax method. So, the data I receive is in the form of html string i.e. <img src="image/1.jpg"/>. Now I wanted to append this data into a div which has an id "container". So I done this by: $('#container').hide().append(data).fadeIn('slow');
I have a function named "resize" which resizes the image according to the window size. Now when i tried this: // this code is in executed on success. $('#container').hide().append(data); resize( $('#container img') ); $('#container').fadeIn('slow');
I had to click a thumbnail twice to load the image into the container. I don't know why is it so. So, I tried a different route. I tried to apply resize function upon the <img> tag received as data and then append it to the container div.
Which I did like this: resize ($(data)) //alerting $(data).attr('src') shows the src of the image. $('#container').hide().append(data).fadeIn('slow'); The image loads but it is not re-sized. What should I do? The re-size function I'm talking about, u can see it here: [URL]. Right now, I'm calling the resize function in the callback of fadeIn method, the image fades in and then resizes, but that looks very ..... unprofessional and ugly.
I then delete testFile.txt and click on 'Submit' without refreshing, and this time, it does NOT create testFile.txt - and hence, my guess is that it is not calling on functions.php, and of course, alert is empty as usual.
What I want to do is this: I want to be able to click on the Submit button - without refreshing the page - and return data from functions.php and display it within a div tag on index.php What am I doing wrong to get an empty alert?
i retrive data from web service using .ajax() and appand that data in nested <ul><li>..ajax() is run under $(document).ready() .. After appending the data (received from ajax) to <ul><li> I want to perform some .click() on these appended elements .. but i can't seem to get it working. Is this a bug or the .click() function should be placed somewhere else.
When i call alert(data), it says it is "undefined". i am new to jQuery, but this appears to mean that no data is being passed to the callback function even though i know the $.post() executed properly (the server side code is executing, and the other alert() tells me that it had a successful result and the callback is being made.
how can i write a function that accepts a callback function?[URL].. i want myFunction to load some data via(an unordored list actually) load method end then somehow to return the wrapped elements for the callback function, exactly like load() does.