AJAX :: Simple Async "Server Push" Using AJAX And Web Service?
Jan 21, 2011
this has probably been discussed before but perhaps not enough as I haven't been able to find any literature on this method (parts are documented, but not as a whole I guess)Anyways, you start with a web service, and you call that web service client side with ASP.NET AJAX javascript. Once you get a reply, you can call a artial postback using __doPostback(a, b) and "a" is the control id of an updatepanel in your page and "b" can be an indicator for which web service you are using or your resulting data or both. Lastly you add a check for "a" and "b" like this:
[Code]....
Now you can execute any code behind function when you receive a response, and because it's async anything short of leaving the page and it will still postback when you get a response.For example, I have a site which display data from a database in a gridview and uses a client side web service to get the time last updated for a database, call the web service client side every second, then, when an update is detected, call a partial postback, alert the user, and update the gridview.Though this really is a hack, so I'm not sure if there any problems with this approach, if there's a simpler and better way to go about it (I'm all ears).
The following 'hello world' webservice works fine on my computer (VS2008) but I can't get it to work on the server--either from an aspx page (below) or when invoked directly. I get '404 page not found' on the direct invocation.
[Code]....
I added the HttpGet and HttpPost to test the web service directly on the server. I can open the page and invoke it, but then get the 404 page not found response.
I want to provide status updates during a long-running task on an ASP.NET WebForms page with AJAX.Is there a way to get the ScriptManager to execute and process a script for a web service request concurrently with an async postback? I have a script on the page that makes a web service request. It runs on page load and periodically using setInterval(). It's running correctly before the async postback is initiated, but it stops running during the async postback, and doesn't run again until after the async postback completes.
I have a async file upload control and I am doing client side validation for Image."OnClientuploadstarted" I am doing the client side validation.My validation is working fine but my problem is that the file upload control text box goes green (i.e file is loaded on the server) even if the validation fails which is I dont want.What I want is when the client side validation fails the file does not gets loaded on the server and the Async file upload textbox does not goes green.I have goggled but have not found a suitable solution.
I'm trying to save some content whenever a button/hyperlink is clicked using jquery.ajax (Using Asp.net 3.5). The logic is as follows:
Through .bind in jquery I bind my own method(MakeLog) to a button click or hyperlink click. The click events of button/hyperlink contain nothing, I need to use .bind for selective controls.Now we have a button whose click event will fire a method, say MakeLog.Code snippet for MakeLog is as follows:
This works fine in IE but in Firefox this is not sending the data back as expected.I tried to identify the issue and came across the following: http://stackoverflow.com/questions/3522944/jquery-ajax-calls-async-false-vs-async-true .What I understand is that, whenver page is redirecting/reloading due to button click or hyperlink click the async call is not working properly.
I'm trying to implement an auction website and I search in web the Ajax Push is the best way where I can use! So, I'm finding some samples in web to learn how to implement Ajax Push (comet) in client and server. By the way, I find some samples in ASP.Net Webforms, but no in MVC version. I'd like to find a demo, sample, anything ... that use MVC
I want to make an async call to the server when an achor tag is clicked and then have the browser advance to the href without waiting for the async call to return a result. I am using System.Web.UI.ICallbackEventHandler. My server code is not executing. The server code only executes if the GetCallbackEventReference call specifies a clientscript value which means the page has to wait before advancing. What am i doing wrong?
My client code is:
<script type="text/javascript"> function ReceiveServerData(arg, context) { } function DoAsyncTask(arg) { CallServer(arg, ''); return false; } </script>
What I'm looking for is to disable the submit button if any of the inner updatepanels are in postback mode. I would also like some way to block that particular panel. I guess for the outer updatepanel, updatemode should be set to conditional, and usechildrenastriggers should be false. What's really bugging me is how to block the panel while a postback is occurring.
In all my tests thus far, the outer updatepanel's updateprogress is triggered, which blocks the whole page.
So I have a page with an UpdatePanel and some controls in there. When I explicitly type/copy+paste the page's address into the address bar, let VS navigate there for me, or follow a link to the page, all of the AJAX works fine. But if I refresh this page, the JS on the page initiates the async postback, but the appropriate event is never called on the server (although Page_Load is) and the client never recieves the markup sent back by the server. This issue seems to be limited to Firefox 3.6 (Gecko build 1/15/2010)(doesn't happen in IE8). I have yet to try on other versions of Firefox.
I have a very typical set up, an ajax update panel is updated when a drop list of offices changes. Each form could have it's own values, for instance each store will have it's own list of employees. Here is where the fun begins. The form can be changed by the drop down (new office) or validated and submitted.
On drop down change, I create a new instance of the same rad combo, bind it to the current data, confirm that the correct data is bound. Then on the return trip I see selected the default user from the previous user. This is a composite control, and firebug shows me that the value for the "text box" that simulates the combo still has the old value. I'm suspecting onViewStateLoaded, but turning viewstate off for the Telerik didn't . II don;t need it anyway, cuz I have to put the selected value in another hidden to make a cross page post on submit.
I'm working on adding a todo list to a project system and would like to have the todo creation trigger a async postback to update the database. I'd really like to host this in a usercontrol so I can drop the todo list onto a project page, task page or stand alone todo list page.
Here's what I have.User Control "TodoList.ascx" which lives in the Controls directory.
The script that sits at the top of the UserControl. You can see where I started building jsonText to postback but when that didn't work I just tried posting back an empty data variable and removed the 'string[] items' variable from the AddTodo2 method.
<script type="text/javascript"> $(document).ready(function() { // Add the page method call as an onclick handler for the div. [code]...
I can have a control that can be used to display multiple todo lists and create a brand new todo list as well.When I click on the #divAddButton I can watch it build the postback in firebug but once it completes it runs the error portion by alerting 'error'. I can't see why.
I'd really rather have the response method live inside the user control as well. Since I'll be dropping it on several pages to keep from having to go put a method on each individual page.
I'm running into an issue with an async call to the server that only works one time, then it appears to become a synchronous call. Let me try to explain.
It's an MVC 2.0 site, using ASP.NET and Ajax. I'm using the Ajax.BeginForm helper, like so:
<% using (Ajax.BeginForm("Start", null, new { virtualMachineId = xyz }, new AjaxOptions { UpdateTargetId = "VirtualMachineForm", OnBegin="OnStartingVm" } )){
[Code]....
Within the updateStartingStatus function, the first part runs every second, every time. However, within the Ajax call, the success result works every second on the first time only. Then on the second time I click on the start button all of the requests queue up. After the starting has completed, about 20 seconds later, I get a bunch of alert windows back to back. So, I can tell that updateStartingStatus runs every second every time, but the ajax call appears to switch to become a sync call after the first time.
I have to fully close it and open it again. The same occurs in IE and Chrome.
One more thing to note is that the updated div (VirtualMachineForm) contains most of the page, including the button being pressed. So it basically replaces the page from under itself. Not sure if that would cause any issues.
Additionally, if I debug in Visual Studio 2010, the call isn't made to the controller action when the issue occurs. So, it appears to be something client-side. I've ruled out any issues server-side.
Since data saving is a time consuming, I would like to call data saving method using Ajax and that too Async what i mean is as soon as the user click submit button it just display the confirmation page and data saving bit keeps going on in the background.
I have a series of div's inside an update panel, these divs have a margin-bottom defined in css. In IE8, when I do a async postback these margins are all removed. All the other styles are fine. If I turn on compatibility mode this does not happen. In Google Chrome the margins are maintained correctly after the async postbacks.
I am creating a ASP.Net server control to manage locations. The control is a composite control containing several text-boxes, labels, and a link button. I use the AJAX Control Toolkit to provide a modal popup which contains a Bing map. All the Javascript is in its own file and used as an embedded web resource.
The link button is what opens the modal popup. It also needs to call a Javascript function that initializes the Bing map (onclick = "GetMap();"). There are instances when this server control is placed within an Update Panel (and there is no way to avoid this). When in an Update Panel the link button loses its onclick event. I understand that this is because during an async postback the portion of the DOM that defines the content of the Update Panel is thrown out and reinitialized, resulting in the event breaking. When the control is not in an Update Panel everything works as intended.
I have tried registering events on Page.Load and Page.Init, like so:
[Code]....
I have also tried flat out writing the function call to the page:
[Code]....
I have put breakpoints on the lines inside each delegate and they do not get hit. I am not aware of any special way to register events of a composite control's child control or the Page.Load/Page.Init events when being done inside a server control. Is there some special way to register these events? (Note: Both those code blocks above are in my CreateChildControls() method)
Below is the GetMap() Javascript function. As you can see it is pretty straight forward.
i'm using asp.net 2.0 form with ajax. i have an ihhtpmodule which can thrown an exception at Application_EndRequest step. my problem is that if this happen in an async postback (i mean a postback of an update panel) i can't manage the exception (with manage i mean set a custom error message server-side) becouse it's too late for the error handler of the ScriptManager.
(the alert will print a message as:
Sys.WebForms.PageRequestManagerParserErrorException: The message received from the server could not be parsed. Common causes for this error are when the response is modified by calls to Response.Write(), response filters, HttpModules, or server trace is enabled.
Details: Error parsing near 'MyButt" />
|<html> <head>)
at the moment my idea is to clear the response in the module and find a way to use the scriptmanager to send the correctly response of an error/exception. it's this possible? or samebody has another option of how to manage this case? note:i can't edit the aspx to manage this client client side with custom javascript
I'm trying to combine nested listviews, updatepanel and asyncfileupload, but have run into some problems. I'm having a main listview listing some projects, and in each project I have a nested listview listing some images in that project. I also have an insertitemtemplate, for inserting new images. This template contains an asyncfileupload control. Everthing is contained in one large UpdatePanel, to enable smooth editing of the images and their associated information.
Problem 1:
The fileupload is complete now, and the file uploads as I expect. In the AsyncUploadCompleted event I'm also inserting the uploaded image to the database. So far so good. But when the upload is done, I want to be able to see the newly updated record in my nested listview. But this is not the case. I'm not able to DataBind the listview in the AsyncUploadCompleted, because that throws an exception saying "The control collection cannot be modified....". So, how do I manage to do an async update of the nested listview, showing the new record?
Problem 2:
When deleting items from my nested listview, after the async update the listview shows up without any items except the InsertItem. The items are not removed, a refresh of the page brings them back. Why is the databinding lost during the async postback?
In our application we have a scenario where we need to display a panel using modalpopupextender after performing an async call on the server. We were using the Show method for displaying the popup. It used to work fine without any async call. But when an async call was introduced during the request processing the popup is not getting displayed.
I have following code and when I select from my drop down list the progress controls do not show and my grdiview is not being filled either. If I leave out the update panel from my code things are working fine.
I am using VWD 2008.. I have a RadioButtonList with two options.
[Code]....
I also have an UpdatePanel
[Code]....
When the LoadingOption change it then has some code behind that at the moment changes the <asp:Literal ID="ItemName" runat="server" /> text.
If I don't have a Radiobutton selected when the page loads then all works fine. i.e. I can select either radiobutton and the ItemName updates correctly.... Whats the problem you may ask ????
Well I want to have one of the Radio buttons selected when the page has been loaded (like a default setting). So I do this <asp:ListItem Text="1kVA" Value="1kVA" Selected="True" />........ Here is my problem, When I select the other option (7kVA) the ItemName updates fine BUT if I then select the first option (1kVA) the ItemName does not update. I added another button that just does a postback. When the button is clicked the ItemName updates correctly. OK, fine but I don't want that. I want to be able to click on one option and the ItemName updates then click on the other option and the ItemName updates.
Have I missed something out ??
By the way if I set the <asp:AsyncPostBackTrigger ControlID="LoadingOptions" /> to <asp:PostBackTrigger ControlID="LoadingOptions" /> then it works how I want it apart from the reloading of the page, I would like it to update in Async Mode so it is seemless and no page reload.
I have to code a chart which get his data of a PLC-control. The problem is that the PLC send every second a measurement to my program, so I have to refresh the chart every second. Via a timer-element of AJAX I can load the chart every second with new data, but I donīt know how I can make this asynchronous.
I want to have this:
The chart-Website should refresh the chart every second via the ajax-timer. The measurements which were used should stand in an array which is updated with the PLC-control-Function.
I tried to search around, but could not find anything for this question which must be wrong, because I would guess there were a lot of topics about it.
Anyway, I would like to load lists on my site in a similar style to Facebook and Twitter, where initially x records are loaded into the list, and then after the page has loaded the list expands downwards with more rows of content, or add a "more" button in the end. I am using ASP.NET with C#.