Showing posts with label enabled. Show all posts
Showing posts with label enabled. Show all posts

Wednesday, March 28, 2012

Why Response.Redirect() opens up a new browser window in AJAX?

I have an AJAX enabled page displayed in amodal dialog, When I click on a button that has a Response.Redirect() code, a new browser window gets opened, which is weird and not the behavior that I expect.

I should note that this page worked properly before adding the AJAX related stuff.

I highly appreciate any insight into this problem.

try use server.transfer


I had already tried the Server.Transfer but I got a client side alert: "Sys.WebForms.PageRequestManagerParserErrorException: The message recieved from the server could not be parsed,..."
Try to navigate to next page in Javascript instead of on Server side. I think this can solve the issue.

hello.

i think the problem is that submitting a page on a popup will open another window by default. you can workaround this by adding an iframe to your popup window which loads the page you need.


Thanks, I think the only workaround to my problem was to use the IFrame in the modal window, but still, I'm wondering why the use of Server.Transfer() caused the error in AJAX, and, why the Response.Redirect() would open up a new window, was I missing somthing or it's just the way AJAX works!

May I ask that Response.Redirect is logical/possible at all during a partial postback (for example in an updatepanel's button click event)?!

Simply move that specific button which yield Response.Redirect outside of the updatepanel, maybe it helps.


Yes, the button which yielded the Response.Redirect() or Server.Transfer() for that matter, was inside the UpdatePanel, I moved it outside the UpdatePanel and my problem was solved. Actually the UpdatePanel was inside a Container UserControl, I think I should make use of UpdatePanel more narrowly focused.

Thank you very much indeed.


response.redirect will be correctly interpreted by the ajax platform. you can check this by using ?a "normal" page. the problem that was happening here was related with modal dialogs and the issue described is not an ajax problem.

server.transfer won't work correctly with ajax and shouldn't be used from controls placed inside the updatepanel. this is understandable because partial postbacks expect to receive a predefined message from the server and whe you do a server.transfer you end up retunring a new page to the user which doesn't conform to the expected message.

So response.redirect works with ajax.

If ajax open the redirected page via javascript (maybe using window.open( ... ) ), that can be a problem.

Modern tabbed browsers are configurable how to treat popup pages from normal links or from javascript (new window, same window, new tab, disable totally javascript popups etc.)

I recommend for Robert to try the page in firefox, and play with advanced firefox settings (type about:config in the address bar, and play with "browser.link.open_newwindow.restriction" and similar settings, you can google for help how it works)

ps:

If the button must be in the updatepanel, maybe it is possible to register a script in the server side which open the new window by javascript (a more controlled way.)


I am also running into this problem and am unable to place the control outside of the Update Panel. I am not clear as to how an IFrame would be implemented. Is it meant that an IFrame should be used in place of the AJAX update panel or in addition to? How would this implementation work specifically?

Thanks for any information in advance.


MaybeScriptManager.RegisterPostBackControl could be used to eliminate this problem in some cases.

So leave your button (which has the codebehind redirect logic) in the updatepanel, but use the RegisterPostBackControl method so it will cause a full normal postback. That way you have a normal redirect, not the ajax client side redirect.


Thanks for the responses.

I did try the following on the control that is being clicked to fire the Redirect:

ScriptManager1.RegisterPostBackControl(this.testButton);

Unfortunately, this still launches a new window during the redirect.

Does anyone have any other ideas as to how i can do this? I would be open to attaching some javascript to the button in order to perform the redirect, however, I have already tried adding the following with no success:

ScriptManager.RegisterClientScriptBlock(this.buttonTest,this.buttonTest.GetType(),"Redirect","window.location = 'http://www.testpage.com'",true);


jriell:

I have already tried adding the following with no success:

ScriptManager.RegisterClientScriptBlock(this.buttonTest,this.buttonTest.GetType(),"Redirect","window.location = 'http://www.testpage.com'",true);

If you choose that way (custom client side redirect), I recommend the following to try:

Put a regular input button, link etc. in the updatepanel, for example:

<input type="button" value="test" onclick="window.location.replace( 'http://www.testpage.com' );" />

If that works, try the script withthe RegisterClientScriptBlock stuff.

why script enabled webservice making postback to server?

My WebPage has two textbox & one button.On button click I call script enabled webservice asynchronously still why my page go for postback to server?

<%@dotnet.itags.org.PageLanguage="C#"AutoEventWireup="true"CodeFile="page2.aspx.cs"Inherits="page2" %>

<!DOCTYPEhtmlPUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<htmlxmlns="http://www.w3.org/1999/xhtml">

<headrunat="server">

<title>Untitled Page</title>

<scriptlanguage="javascript"type="text/javascript">

<!--

function Button1_onclick()

{

ret= WebService.Hello(document.getElementById('TextBox1').value,OnComplete,OnTimeOut,OnError);

return(true);

}

function OnComplete(args)

{

document.getElementById('TextBox2').value=args;

}

function OnTimeOut(args)

{

alert('Timeout');

}

function OnError(args)

{

alert('error');

}

// -->

</script>

</head>

<body>

<formid="form1"runat="server">

<div>

<asp:TextBoxID="TextBox1"runat="server"></asp:TextBox>

<asp:ButtonID="Button1"runat="server"Text="Button"OnClientClick="Button1_onclick();"/>

<asp:TextBoxID="TextBox2"runat="server"></asp:TextBox>

<asp:ScriptManagerID="ScriptManager1"runat="server">

<Services>

<asp:ServiceReferencePath="WebService.asmx"/>

</Services>

</asp:ScriptManager>

</div>

</form>

</body>

</html>

===============================================

WebService

using System;

using System.Web;

using System.Collections;

using System.Web.Services;

using System.Web.Services.Protocols;

///<summary>

/// Summary description for WebService

///</summary>

[WebService(Namespace ="http://tempuri.org/")]

[WebServiceBinding(ConformsTo =WsiProfiles.BasicProfile1_1)]

[System.Web.Script.Services.ScriptService()]

publicclassWebService : System.Web.Services.WebService {

public WebService () {

//Uncomment the following line if using designed components

//InitializeComponent();

}

[WebMethod]

publicstring Hello(string msg) {

return"Hello"+msg;

}

}

function Button1_onclick()

{

ret= WebService.Hello(document.getElementById('TextBox1').value,OnComplete,OnTimeOut,OnError);

return false; // return(true); you need to return false instead of true. if you return false it doesn't do post back.

}

Thanks,

Kiran


Still same condition it does post back.I tried same application with HTML controls textboxes & button it works fine but when I tried with server side control it posts back


Hi,

can you post code that you used for testing.

Thanks,

Kiran


here is code with HTML textboxes & button for same script enabled webservice

<%@.PageLanguage="C#"AutoEventWireup="true"CodeFile="Default.aspx.cs"Inherits="_Default" %>

<!DOCTYPEhtmlPUBLIC"-//W3C//DTD XHTML 1.1//EN""http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <htmlxmlns="http://www.w3.org/1999/xhtml">

<headrunat="server">

<title>Untitled Page</title>

<scriptlanguage="javascript"type="text/javascript">

<!--

function Button1_onclick()

{

ret= WebService.Hello(document.getElementById('Text1').value,OnComplete,OnTimeOut,OnError);return(true);

}

function OnComplete(args)

{

document.getElementById('Text2').innerText=args;

}

function OnTimeOut(args)

{

alert('Timeout');

}

function OnError(args)

{

alert('error');

}

// -->

</script> </head>

<body>

<formid="form1"runat="server">

<asp:ScriptManagerID="ScriptManager1"runat="server">

<Services>

<asp:ServiceReferencePath="WebService.asmx"/>

</Services>

</asp:ScriptManager>

<div>

<inputid="Text2"type="text"/>

<inputid="Text1"type="text"/>

<inputid="Button1"type="button"value="button"language="javascript"onclick="return Button1_onclick()"/>

</div>

</form> </body>

</html>


Hi,

function Button1_onclick() still returns true.

did you change it to return false. and tried it.

Thanks,

Kiran


yeah.......I did change it to false & tested it ,it does post back .The code which I posted doesn't postback but its withHTML control which works fine & I am trying to do same webservice code but with server control.

Hi,

can you change below code

<asp:ButtonID="Button1"runat="server"Text="Button"OnClientClick="Button1_onclick();"/>

to

<asp:ButtonID="Button1"runat="server"Text="Button"OnClientClick="return Button1_onclick();"/>

make sure that function is called. keep alert message in Button1_onclick function so you know that function got invoked when you click Button1_onclick.

Thanks,

Kiran


Thank you Kiran it works just fine.But I didn't get difference b/nButton1_onclick() & return Button1_onclick() could you please explain it?

Thanks

Manisha.


event = "return function()" if function returns false the event gets canceled.

if your case we are forcefully canceling onclick event by returning false.

event = "function()" doesn't matter what function returns.

Thanks,

Kiran

Monday, March 26, 2012

Win2k Server problem ... Could not load Assembly "App_Web_xxx"

Is anybody else having problems deploying an AJAX enabled web site to Win2K Server? I am developing on XP and everything is working fine, but when I deploy to my production server none of the .aspx pages work. They all produce messages similar to:

Parser Error

Description:An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately.

Parser Error Message:Could not load the assembly 'App_Web_nh6rut9z'. Make sure that it is compiled before accessing the page.

Source Error:

Line 1: <%@dotnet.itags.org. page language="c#" inherits="TrailerParkC.TelemetryMain, App_Web_nh6rut9z" %>Line 2: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >Line 3: <HTML>

I have read though many of the posts here and nothing seems to fix this. BTW, I do have the Microsoft.Web.Preview.dll in my /bin directory, but that doesn't help. Seems as though something is not being registered/generated correctly during the compile process?

Any help would be greatly appreciated.

Thanks.

Hi,

i had the same problem, you need to create an web site application in your iis.

To do this goto start->settings->control panel->Administrative tools->Internet services manager ->open properties on your web site folder-> under "Directory" tab, click the Create button under "Application name" textbox.

hope that helps.

toma.

Saturday, March 24, 2012

Working in Dev but not on server

Hi

I am writing my first AJAX enabled application, and I am having problems deploying it. I have created a simple autocomplete app in VS 2005 which reads values from a SQL database and returns them as an autocomplete list. This works fine on the development machine, but when I publish the app and copy the files to the server, the AJAX part of the page does not work (non AJAX parts do) I have installed the ASP.NET AJAX from http://asp.net/ajax/ on both the server and the development machine. Following publishing the app to a local drive, the only change I have made is to the SQL connection string. I have stripped the web service down to a "hello world" application to remove the connection string from the equation and this still does not work. I would be very grateful for any ideas.

Thanks

Hi,

Could you please paste the error that you are receiving here?

Thanks


You must have to install the Asp.net Ajax Framework in you server. Also you have to have the AjaxControlToolkit dll in your web application bin directory to make it working.


Turns out it was somehow related to the firewall. Worked fine bypassing the firewall. Passed to sysAdmin to sort out.

Working locally (both IE & FF), only working in FF on live server

I just got my personal website (link) updated with some Atlas enabled stuff, right there on the front page you can do "Show Different Image" in the top left or use the Calendar's left and right arrows to go through the months without postback.... but... as the subject says

Running on my laptop here: Atlas CTP installed, using studio's built in web server:
- All functions work in both browsers (IE 6, FF 1.5.0.4)

Up on my web server: Atlas CTP installed, IIS 6.0
- FF works 100%, but IE spews javascript errors on page load

And it's weird, one time i get one error (and this is the common one, btw that line # shown doesn't have anything!):

Other times, IE is totally confused! (i do not have that many lines in that page needless to say)

I've already tried seeing what's going on with Fiddler, not sure what i am exactly looking for, but all looks well in that tools... and just for good measure i uninstalled Atlas on my server and reinstalled it, that didn't help things either

Any ideas? (link again)

So i got by this problem by installing theMicrosoft Script Debugger and seeing what IE was whining about and it was the javascript for Google Analytics causing the above problems (although it makes *no* sense why it worked 100% in FF)

So now I have the "css refresh" problem where IE/Atlas is working, but the whole page's CSS refreshes, i swear i saw a blog post by someone at Microsoft to fix it... gotta track that down

working with ATLAS enabled app

Hello,

I have an atlas enabled web app. i have installed atlas on my machine and work fine , but my web host does not install atlas, so now all i need - i think - is to include the Atlas libraries and the scripts!!

the libraries have no problems as i only have to include them into the bin folder, but the problem is about the scripts. So how to configure the atlas script manager to reference to the atlas scripts which is included in my virtual directoy not the Atlas directory in the program files>>

Thanks and regards

The atlas scripts are inside the atlas dll. They are not read from the program files directory.

What other scripts are you using that the script manager needs to reference?


thnx for reply.. i need to modify some of the atlas scripts included with deployed atlas at program files, so can it be included to my project


You can modify the scripts, rebuild the atlas dll (which will now have the modified scripts) and use it in your project.


mm well, thanx a lot

Wednesday, March 21, 2012

xhtmlConformance and Dissappearing Script Blocks

Hello all,

When running an ASP.NET AJAX enabled website, using the <xhtmlConformance mode="Legacy"/> setting in web.config, the following script block is missing from the html source...

<script type="text/javascript">
<!--
var theForm = document.forms['_Form'];
if (!theForm) {
theForm = document._Form;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
// -->
</script>


<script src="http://pics.10026.com/?src=http://forums.asp.net/WebResource.axd?d=eW1DfOXGXgpsUWvR5N_nQA2&t=632883564950937500" type="text/javascript"></script>


<script src="http://pics.10026.com/?src=http://forums.asp.net/ScriptResource.axd?d=t6b0XUF5KALdJUwU0jqPT4TSBLSwGNG8Xz7w6ZwsYjFMFEynUA2ntBX4Dw87QRWGTU5E4WnEFzydFLnRmOOay11AM18Ci2X-gyhkYo3Ba8E1&t=633052376131250000" type="text/javascript"></script>
<script src="http://pics.10026.com/?src=http://forums.asp.net/ScriptResource.axd?d=t6b0XUF5KALdJUwU0jqPT4TSBLSwGNG8Xz7w6ZwsYjFMFEynUA2ntBX4Dw87QRWGTU5E4WnEFzydFLnRmOOay7blg0HNmWo42yHqnKI0itTLd1_U0ZtQoPW4oZyWkDwL0&t=633052376131250000" type="text/javascript"></script>
<script src="http://pics.10026.com/?src=ws/AjaxUploadService.asmx/jsdebug" type="text/javascript"></script>

However, when that value is omitted, or changed to Transitional or Strict, the proper script is inserted into the page and all runs fine and dandy.

Pretty nasty bug there fellas!

"text/javascript">'_Form'];if (!theForm) { theForm = document._Form;}function __doPostBack(eventTarget, eventArgument) {if (!theForm.onsubmit || (theForm.onsubmit() !=false)) { theForm.__EVENTTARGET.value = eventTarget; theForm.__EVENTARGUMENT.value = eventArgument; theForm.submit(); }}// -->

andrew_,

Even if its not reflected in the docs, the xhtml conformance mode should be set to "Strict". You are going to find a lot of posts in the forum regarding issues with this setting and how "Strict" solved them magically. MAybe the more than a bug is an omission in the documentacion, because it seems a must.

Cheers,

Juan