没有从http输入流接收数据

时间:2011-04-26 15:20:15

标签: javascript asp.net c#-4.0 firefox-addon

function sendRequestToDelicious()
{
var xmlhttp=false;
    if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
    try {
        xmlhttp = new XMLHttpRequest();

    } catch (e) {
        xmlhttp=false;
    }
    }
    if (!xmlhttp && window.createRequest) {
    try {
        xmlhttp = window.createRequest();
    } catch (e) {
        xmlhttp=false;
    }
    }


  var url = "http://localhost:52271/WebForm1.aspx";
var params = "q=hello";
xmlhttp.open("POST", url, true);

//Send the proper header information along with the request
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.setRequestHeader("Content-length", params.length);

xmlhttp.send(params);
    }

在我的ASP.NET应用程序中,我正在从page_load事件中读取流,但我没有收到数据。我做错了什么?

ASP.NET中的C#代码:

    public partial class WebForm1 : System.Web.UI.Page
    {
        SqlConnection conn;

        protected void Page_Load(object sender, EventArgs e)
        {

            StreamReader reader = new StreamReader(Page.Request.InputStream);
            String data = reader.ReadToEnd();

        }
...

1 个答案:

答案 0 :(得分:1)

看起来这篇文章包含了您要执行的操作的准确代码:

Fake a form submission with C# WebClient

如果您只需要Page_Load中的数据,则不需要使用JavaScript执行此操作 - 对吗?

我个人不再使用XmlHttpRequest对象了。我放弃了它,转而使用jQuery AJAX函数。成功发布的回调函数可以很容易地从服务器捕获响应。

以下是如何使用jQuery AJAX执行此操作的示例:

$.ajax(
{
    type : 'POST',
    url : 'http://localhost:52271/WebForm1.aspx',
    dataType : 'json',
    data: 
    {
        q:'hello'
    },
    success : function(data)
    {        
        $('mydiv').text(data.msg).show(500);     
    },
    error : function(XMLHttpRequest, textStatus, errorThrown) 
    {
        $('mydiv').text('There was an error.').show(500);
    }
}
);