JQuery :: Javascript Code To Wait Until The Ajax Has Finished?
Jan 13, 2011
I have a button that needs to check if a contact exists.I have used the Jquery ajax function to do this and I do successfully gind out if the contact exists or not.However I cannot find a way for the javascript code to wait until the ajax has finished so I can return true/false to the button for it to continue server side function. I.e.
I have an UpdatePanel with a repeater in it that is re-bound after a user adds an item to it via a modal popup. When they click the button to add a new row to the repeater the code-behind looks something like this:
protected void lbtnAddOption_Click(object sender, EventArgs e) { SelectedOption = new Option() { Account = txtAddOptionAccountNumber.Text, Margin = chkAddOptionMargin.Checked, Symbol = txtAddOptionSymbol.Text, Usymbol = txtAddOptionUsymbol.Text, }; Presenter.OnAddOption(); // Insert the new item RefreshOptions(); // Pull down and re-bind all the items mpeAddOptionDialog.Hide(); // Hide the modal // ... Make call to jQuery scrollTo() method here? }
This works fine and the new row will show up quickly via the UpdatePanel. However, there are often hundreds of rows and where the new one is added is based on the current sorting column used. So, I wanted to take this as a chance to use the sweet jQuery ScrollTo plugin. I know that if I give it the ID of my overflowed container div and the ID of an element within it, it will smoothly scroll straight to the users newly added row. However, there are two problems:
I need to find the appropriate row so I can snag the ClientID for it. I need to execute the jQuery snippet from my code-behind that will cause my newly updated repeater to scroll to the right row. I've solved #1. I have a reliable method that will produce the newly added row's ClientID. However, problem #2 is proving to be tricky. I know I can just call ScriptManager.RegisterStartupScript() form my code-behind and it will execute the JavaScript on my page.
The problem I'm having is that it seems that it is executing that piece of JavaScript before (I'm guessing) the newly refreshed DOM elements have fully loaded. So, even though I am passing in the appropriate jQuery line to scroll to the element I want, it is erroring out for me because it can't find that element yet. Here is the line I'm using at the end of the method I posted above:
and then call a JS function. This is because I have more than one update panels and I'll have to write all the condions to check which UpdatePanel was actually called and then do something. Can something be done using Triggers in UpdatePanel. Kindly let me know how this can be done.
It would be great of you could post a sample code too.
I'm calling a web service called GetTooltip from inside Javascript. However, since the web service is called asynchronously, it doesn't wait until I get the return value from the web service, before it continues again. This is a bit of a problem for me, since the web service is in a for-loop. How do I make the Javascript wait until I hear back from the web service, before letting Javascript continue the for-loop?
So I have this idea of creating a asp.net user control, to handle all forms of modal popups (whether it be error handling, forms, dialogs, etc).
I already created this before, placing the user control in the top master page, exposing it to all content pages, so I could do something like:
Master.Popup.ShowException(Exception);
And the usercontrol itself would have the necessary markup to look like a modal dialog, and in the show method just do a .Visible = true.
This is all fine, but I've started thinking of implementing a bit of style with jquery. I'd like for the usercontrol to have some sort of jquery animation on show. But I don't know how to go about achieving this, as I don't know how I would call that jquery function from the codebehind instead of the popup.visible = true.
I have code that when i press a button an image starts to annimat. But when the page is finished loading the image resets. Is this a server issue? and how can i fix it.
I have my own SQL based session class. I want to automatically commit the data in the session at the end of program execution (i.e. at the end of serving the page request). Do object destructors (finalizers) not get executed at the end of every request? Is there anyway of doing this instead of having to explicitly call a Dispose() method every time I am done with my session object?
I might be wrong about what is actually happening here but i have 3 Html.dropdownlists. And im using jquery to handle filtering which does actually work. However, there is some odd behaviour which i think might be because data isnt finished loading before the next function is called. For instance: Some background. Company: Owns several field offices Field Office: Owns several facilties So logically, when you change company, field offices should change, which then changes facilities.
$(function () { $(document).ready(function () { var cid = $("#CompanyId").val(); $.post("/ManifestSearch/GetFilteredFieldOffices", { id: cid }, function (data) { $("#FieldOfficeId").loadSelect(data); }); var fid = $("#FieldOfficeId").val(); $.post("/ManifestSearch/GetFilteredFacilities", { id: fid }, function (data) { $("#FacilityId").loadSelect(data); }); }); }); Now, when the page loads, everything looks fine. All the dropdownlists have the correct data. When i change company, this calls. $(function () { $('#CompanyId').change(function () { var cid = $(this).val(); $.post("/ManifestSearch/GetFilteredFieldOffices", { id: cid }, function (data) { $("#FieldOfficeId").loadSelect(data); }); var fid = $("#FieldOfficeId").val(); $.post("/ManifestSearch/GetFilteredFacilities", { id: fid }, function (data) { $("#FacilityId").loadSelect(data); }); }); });
This changes the field offices to the correct list, however facilities changes to whatever field offices was set to before the company change occured. I dont know enough about jquery to figure out exactly what is going on, but my instinct tells me that the two posts are happening at the same time, and the second post happens before the first one is finished.
How can I use JQuery to be able to show some kind of "Please wait"-dialog when a user clicks a button? I want to be able to show for example an alert saying "Your request is being transmitted" while the request is sent to the server and processed through the controller (I use MVC). Once the response comes back, I want to reload the page with the viewmodel returned from controller action, just as usual. Is this possible to do with JQuery or ASP.NET AJAX?
function Save() { alert("Please wait); //make the request async and reload the page when it returns... }
which returns <div>here</div><script language=javascript>alert('');</script> The content gets loaded property, but no alert. How would I get a javascript routine to work from an ajax call along with posting the HTML code?
I embed wmp, swf, and qt in a modalpopupextender. Some of the video files take a long time to load so a given player's window stays empty for too long. I think I should be able to have the player hidden initially and display an animated gif in the modalpopupextender and then when the video files completes loading I'd hide the gif and show the player (or simply manipulate the corresponding z-indexes).
I have downloaded a jquery tool which creates overlay windows so here is the code which I want to trigger by calling a javascript function instead of a button or link.
The CSS
[Code]....
The HTML note the overlay is executing when i click the button i want this to be triggered on javascript function)
[Code]....
[Code]....
All i want to do is call a function lets say "ShowOverlay()" from my code behind using ClientRegisterScript() and it should do the same as it is doing on button.
How do you currently find the balance between javascript and code behind. I have recently come across some extremely bad (in my eyes) legacy code that lends itself to chaos (someHugeJavafile.js) which contains a lot of the logic used in many of the pages.
Let's say for example that you have a Form that you need to complete. 1. Personal Details 2. Address Information 3. Little bit more about yourself
You don't want to overload the person with all the fields at once, so you decide to split it up into steps.
Do you create separate pages for Personal Details, Address Information and a Little bit more about yourself. Do you create controls for each and hide and show them on a postback or using some update panel? Do you use jQuery and do some checking to ensure that the person has completed the required fields for the step and show the new "section" by using .show()?
I am working on a customvalidator to validate and replace (if possible) a postal code.
This is a Dutch postal code and should look like "5050 AA". When the user enters "5050AA" this postal code should be replaced with "5050 AA". I tried this by adding the following script to my page, which is called in the customvalidator:
<script type="text/javascript"> function Postcode_ClientValidate(source, arguments) { var val = arguments.Value var result = ""; var myPCRegExp1 = new RegExp("^[1-9][0-9]{3}s?[a-zA-Z]{2}$", "i");
[code]....
However, the script above is picking up the "5038AA" but not the "5038 AA" as a match, so i can't validate a working postal code and can't rewrite to the valid postal code.
I have a java script function which presents a countdown timer.when the timer reaches zero, I want to somehow activate a function on the server side in the code-behind.I understand it is impossible to directly call a server-side function, but is there a simple way to still fire it?I want to fire the (event-handler) code behind function: protected void ButtonFinish_Click(object sender, EventArgs e).
var _countDowncontainer = 0; var _currentSeconds = 0; function ActivateCountDown(strContainerID, initialValue) { _countDowncontainer = document.getElementById(strContainerID); [code]...
I have a page that, jQuery will automatically click the "Run Report" button under certain conditions. So, when the user goes to the page via the menu, they wait for x seconds and the results are returned. This works great...However, I want to add an animation because some users are not aware anything is going on and I also would like to just show a spinner. The application is not yet "Ajaxified" and may never be. So I thought of a poor-mans way of doing it.I have a div that has text and an image in it. That div has a class on that that simply does display: none; The same jQuery that clicks the button I also have it using the .toggleClass method to now Show the div.
This works great AND the report runs and eventually returns the data and since at that point the page is refreshed, the div gets hidden again and all is right in the world.My problem is, the image shows but does not animate. I tried to put it Before the click hoping that would happen and start its thing Then the click even to start the waiting would occur.Is there anything I can do to force the Gif to animate?
I am working on a feature to throw a warning message if the user has unsaved values in a form. I can see that in the next post there is a explanation about how to do that [URL]now the problem is that i need to do the same but using a ascx control and i don't know where put the next code in my ascx control.
<body onunload="checkSave()">
NB: I'm working on dnn so that i don't have any change to add this code in the parent page of the control.
I need to make table rows clickable and can be catched by both js and .net server side .
how can I use Request.form to solve this issue? since I've created functions for js part .
The reason why I want to fire sever side event, because I use JS to add option (item) to an asp:ddl in an updatepanel, it will cause error or lose the new option by doing a postback fired by other buttons.
I am wondering if it is possible to create AJAX Toolkit control using JavaScript/JQuery or not. I know that I can create controls at server (at design or code-behind) and interact with its properties using JavaScript but I would rather want to initalize and create controls at client side using JavaScript/JQuery.
I would like to know what are the best practices in using Javascript in ASP.NET in a pre-AJAX and pre-jQuery era. What I meant by pre-era is not the time before AJAX/jQuery was created, but rather the time before it is popularized and widely adopted (by a significantly large number of programmers).i.e. Is it good thing to store the script in a string variable and register it on demand (RegisterClientScriptBlock) or on startup (RegisterStartUpScript)?Although in using Javascript in ASP.NET, its usage in PHP and JSP are also welcome.
have an update panel that encapsulates a radiobuttonlist which does not update, in certain browsers, without manual page refresh. i am able to make this work using <asp:postbacktrigger controlid="aControl"/>, but only want to refresh the page if browser is Firefox or Flock (two browsers having the issue). i am not sure how to do this, but am open to either javascript or code behind. any suggestions? [code]...
I have some user controls where I would like to add some javascript that uses Ajax and Jquery technology. Also these scripts should use Sys.WebForms.PageRequestManager.getInstance().add_endRequestand other functions of the Ajax framework.In the past I have added the related code to the hosting aspx page but it becomes a problem when re-using the same control in multiple aspx.