AJAX :: Callbacks And Parameters From Outside The Scope Of The Callback?
Feb 9, 2011
This could appear under Ajax, for example, you could have multiple objects that make a singular ajax call (say an RPC-like request) and you need to update the object that made the call during the callback with the result, but it doesn't have to be. The particular problem I'm thinking about happens to be ajax, particularly with multiple objects accessing the same ajax request (meaning I can't use a global or temporary variable).
One way that seems like it would work (just thinking about it in my head), is to create a hash, and to pass the key through the request, store the key in the response, and pick it up on the callback side. Then remove the item from the hash when done.
I am trying to convert some of my javascripts into a class and am running into difficulties which i think are related to variable scope.
Basically I have a constructor function for a calendarInput class that takes 4 parameters, the first is a reference name/number for this input. I also have some functions for importing my PHP classes into Javascript using AJAX (properties only. still trying to get methods working but that's another story!). The relevant function is called call_object_method(classname, methodname, createparams, methodparams, post, callbackfunction). This creates an instance of the specified PHP class using the parameters in createparams. It then calls the specified method using the parameters in methodparams. The result is passed back to the javascript function specified in the callbackfunction parameter (ie the value of xmlhttp.onreadystatechange is set to callbackfunction before xmlhttp.send() is called)
The function i am trying to fix is called show (x,y) which creates the html for the calendarInput and displays it at co-ordinates x, y.
this.showcallback = function() { alert(this); <!--//code to create html//--> }
}
I know i've cut out most of the innards of this. This is because I have already tested these functions and had the calendarInput working outside of a class, hence am pretty sure that this is ok (plus it runs to almost 1000 lines these days!!). My problem is that when I call the show method, the alert on the first line of the callback function returns the function showcallback instead of (as i was expecting) the instance of the calendarInput object. Whilst this kinda makes sense I can't figure out how to reference the Object instead. I have tried 'this.parent' but this returned undefined. I have tried changing the way i reference the callback function (ie the final parameter of call_object_method) but no joy.
I'm trying to create an endless animation similar to a screen saver, here an image floats around the screen, fading in and out. I would like to stay out of the global namespace, so I'd like to use the callback to animate() rather than getTimeout(), which seems to operate only on functions in the global namespace. Please correct me if I'm wrong about that. But I'm having trouble maintaining the scope I want for the callback I want "this" to refer to my Animation object, not the HTML element. I understand many folks have solved this problem for events by using bind() or live(), but I am wondering how to do this for animate().
Why the following doesn't work??? It alert n times (with n=arrIDPortletNavigationDependent.length) the same element of the array: the last one.
function FadeOutAnyPortletAndAFTERalertTheirID() { for (i=0; i<arrIDPortletNavigationDependent.length; i++ ) //arrIDPortletNavigationDependent exists and contain 4 items
I have verified that the server is returning valid json. My jsonpCallback is called, but neither the success nor the error callbacks are. I'm stumped by this.
success(data, textStatus, jqXHR)Function, Array A function to be called if the request succeeds. The function gets passed three arguments: The data returned from the server, formatted according to the dataType parameter; a string describing the status; and the jqXHR (in jQuery 1.4.x, XMLHttpRequest) object.
'success': function(html){ jQuery("#quote-of-the-day").html(html) } success: function(data) { var out = "<ol>"; $(data).each(function(){ out+="<li>"+this.title+"</li>"; });
The above 2 ways of defining the success call back confused me.
1) According to definition, it should take 3 parameters, why here it only takes 1 parameter? 2) Why the name of parameter passed into function() can be different? Does this name matter?
If slideToggle()'s parameters were expanded to include a separate callback for sliding up and sliding down. Or for backwards compatibility, perhaps include an optional boolean parameter in the callback to more easily discern between a slideUp and slideDown operation.
how to manage the script scope on a full ajax application Let me explain a scenario
- Pages are loaded dynamically in a div, - pages are php files - pages contains scripts tags (static and generated via php) depending on context
Load Scenario :
1. master page load pages via $.load jquery function 2. page are inserted and the script is executed (mostly input events or live events)
when i select another page (just imagine a combo with all pages listed), the Load Scenario is executed again... the 2 js code line that matter in the master page
I'm getting the following error: attempt to run compile-and-go script on a cleared scope [Break On This Error] if (xmlhttp.readyState==4 && xmlhttp.status==200)
when i try to run the following code in mozilla firefox:
gethint.html
<script language="javascript" type="text/javascript"> function showHint(str) {
i'm new to ajax. simple request no problem - but it seems when I set the response handler function, I can only pass the function name and not give parameters, so I have a problem when starting e.g. 5 ajax requests parallele. how to do that correctly? for one case, where I used *different* resp. handlers, I solved the problem by global variables - but now I have a loop of e.g. 20 calls to the *same* r.handler and I don*t know how to tell the function *which* request of the 20 to use. I expect the solution to be simple but how..
I have an Ajax script which works fine in IE, Opera, etc, but not in FF 3.6. It appears the data sent is not recognized. My debug alert to display a simple variable sent is blank. In other browsers it displays fine. I'm developing on my PC so shouldn't have the cross domain issue, I don't think?
Here is the code function ajaxRequest() { $.ajax({ type: "POST", url: 'WTE_HTTP_Submit.cfm',
so I'm trying to get a large amount of text back to my ASP script on the server. My large amount of text is the source to a web page, and I want to preserve the formatting on it, ie the indenting. Before any of this the only way I got stuff back to the server is with query strings. Now I'm pretty sure there's other ways to get data back to the sever besides query stings but I'm having trouble finding them. Can somebody point me in the right direction or tell me how?
today I updated my Firefox from 3.5 to 4.0b3 and it seems that the AJAX success callback is not longer fired. Firebug shows the correct response but the function is never called. Is this a Problem of the FF Beta, or is Jquery responsible for this?
And i have gone through this forum and other forums for a simple fix ... since so many have had this problem..but i have nt found anything that seems to work hence i am posting this problem
I dont know what i am doign wrong i have used debugbar and i can seethe html content that comes back i have used fiddler and i see hte html content that comes back there....the xhr stat =200 so every thing is good..yet it doesnot replace the the content $("#updateroster").html(data).
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 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.
JQuery seems to be giving an error when trying to pass an alphanumeric parameter like so:
[Code]...
when the above method is called, the error callback is called. However when I change the eventID parameter to a purely numeric value, it works fine and the success callback is called. I would like to pass an alphanumeric value to a server method and this doesnt seem to work.
For some reason I can't seem to print out the post parameters sent through out my login php script using ajax.. according to ajax (*responseText) the parameters are getting passed.. so.. it got me there..