471,066 Members | 1,181 Online
Bytes | Software Development & Data Engineering Community
Post +

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 471,066 software developers and data experts.

HttpWebRequest doesn't work with JavaScript ;-(

Hello all,

This is a little frustrating ;-(

I have the following used as part of Javascript code. I am trying to
send values from the client to the server following the information
from this web site: http://www.netomatix.com/HttpPostData.aspx

But what I have found is that the code below generates an error and
does not seem to work.
// Prepare web request...
HttpWebRequest myRequest = (HttpWebRequest)
HttpWebRequest.Create("http://localhost:2255/Test.aspx");
myRequest.Method = "POST";
myRequest.ContentType="application/x-www-form-urlencoded";
myRequest.ContentLength = data.Length;

Stream newStream=myRequest.GetRequestStream();
// Send the data.
newStream.Write(data,0,data.Length);
newStream.Close();
Please, please help! I am sooo tired! What am I doing wrong?

Regards.

Oct 2 '05 #1
5 11839
OK - I think the problem was that the code above was for C# and not
javascript? They both look the same ;-/

Anywho, I tried the following code below:

function sendDataToServer (url, dataToPost) {
var httpRequest;
if (typeof ActiveXObject != 'undefined') {
httpRequest = new ActiveXObject('Microsoft.XMLHTTP');
}
else if (typeof XMLHttpRequest != 'undefined') {
httpRequest = new XMLHttpRequest();
}
if (httpRequest) {
httpRequest.open('POST', url, false);
httpRequest.setRequestHeader('Content-Type',
'application/x-www-form-urlencoded');

alert("about to post the data");
httpRequest.send(dataToPost);
return httpRequest;
}
else {
return void 0;
}
}

And this seems to work - but now I am trying to get the values out on
the server side. I tried the following code below:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class Test : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
//do whatever with the form data here
string firstName =
(string)Request.QueryString["FDepents44"];
Console.WriteLine(firstName);
}
}
}

I used the debugger and found that "IsPostBack" is false so the snippet
of code is not being executed. So, how can one get the data out on the
server side using C#? Is the call from the client (using Javascript)
correct? I am just wondering because (as mentioned before) IsPostBack
is set to false.

TIA

Oct 2 '05 #2
Not done too much jiggerypokery with Javaqscript as far as programatically
posting like described here, but it would seem that POST and POSTBACK would
be two different beasts.

Looking at your code you make one POST without first having made a GET, so
it is hard to see how postback could occur.

I may be completely wrong here, and I am sure someone will no doubt correct
me.

Regards Mr N . . .
"milkyway" <d0******@hotmail.com> wrote in message
news:11**********************@z14g2000cwz.googlegr oups.com...
OK - I think the problem was that the code above was for C# and not
javascript? They both look the same ;-/

Anywho, I tried the following code below:

function sendDataToServer (url, dataToPost) {
var httpRequest;
if (typeof ActiveXObject != 'undefined') {
httpRequest = new ActiveXObject('Microsoft.XMLHTTP');
}
else if (typeof XMLHttpRequest != 'undefined') {
httpRequest = new XMLHttpRequest();
}
if (httpRequest) {
httpRequest.open('POST', url, false);
httpRequest.setRequestHeader('Content-Type',
'application/x-www-form-urlencoded');

alert("about to post the data");
httpRequest.send(dataToPost);
return httpRequest;
}
else {
return void 0;
}
}

And this seems to work - but now I am trying to get the values out on
the server side. I tried the following code below:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class Test : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
//do whatever with the form data here
string firstName =
(string)Request.QueryString["FDepents44"];
Console.WriteLine(firstName);
}
}
}

I used the debugger and found that "IsPostBack" is false so the snippet
of code is not being executed. So, how can one get the data out on the
server side using C#? Is the call from the client (using Javascript)
correct? I am just wondering because (as mentioned before) IsPostBack
is set to false.

TIA

Oct 2 '05 #3
Thanks for the pointer. Is there a correct way to write code on the
server side whenever a POST is being done from the client in C#? I
thought that one was to use the page_load somehow.

Also, when I am sending the string, it is in the form of:
TableName=FDepents&FDepents11=600&FDepents12=609 ....

I have now seen (through the debugger), that the following code:

string firstName =
(string)Request.QueryString.Get("TableName");

Just returns a null, even though in the part of the code
alert("about to post the data");
httpRequest.send(dataToPost); <--- HERE
return httpRequest;

Clearly has the parameters being passed in..

Sigh - will wonders ever cease

Oct 2 '05 #4
The if( Page.IsPostback ) construct is the correct way to test if this is a
postback request; Its just that your code which generates the post to the
server is in some question. Having said that, as I have not done this, so I
cant comment on the vailidy of your approach other than one must have to
trick ( if possible ) ASP.NET into a normal mode of operation which would
make it think that this is postback and not the first GET.

As far as the code which your javscript passes to the receiving aspx page,
have you tried this manually ( IE Creating the URL on notepad or something
and pasting it into the browser address bar ). Dont forget to put the '?'
after the basic URL before your query string. Alternatively, there may be
some character stripping going on if this is going though a gateway or
something???!??!??!?!

Let me know how you are getting on, as I find this topic interesting .

Regards Mr N . . . .

"milkyway" <d0******@hotmail.com> wrote in message
news:11**********************@z14g2000cwz.googlegr oups.com...
Thanks for the pointer. Is there a correct way to write code on the
server side whenever a POST is being done from the client in C#? I
thought that one was to use the page_load somehow.

Also, when I am sending the string, it is in the form of:
TableName=FDepents&FDepents11=600&FDepents12=609 ....

I have now seen (through the debugger), that the following code:

string firstName =
(string)Request.QueryString.Get("TableName");

Just returns a null, even though in the part of the code
alert("about to post the data");
httpRequest.send(dataToPost); <--- HERE
return httpRequest;

Clearly has the parameters being passed in..

Sigh - will wonders ever cease

Oct 2 '05 #5
Hi MrN,

I just decided to use the forms.submit since it did not work. Here is a
link to where I obtained the information, perhaps you can try:

http://groups.google.com/group/de.co...96931c799d7772

It is in German but one can understand enough and see the code below.
Here is another:

http://groups.google.com/group/micro...e7f72f2f4da835

Also, it was my understanding that this can only work with MS browsers
- soooo - I left it alone.

Kindest Regards.

Oct 5 '05 #6

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

5 posts views Thread by Dan Battagin | last post: by
10 posts views Thread by Brian Brown | last post: by
10 posts views Thread by Gregory A Greenman | last post: by
5 posts views Thread by milkyway | last post: by
reply views Thread by Susan Van Houen | last post: by
reply views Thread by boxboy | last post: by
2 posts views Thread by Tosco | last post: by
reply views Thread by leo001 | last post: by

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.