我正在制作一个小程序来从我的网页上检索帖子。
在我的网页中,我有一个包含2个文本框和1个“提交”按钮的表单。
在我的c#中,我有代码使页面在服务器上运行。
如何让网页用户按下按钮我可以从网页上获取POST数据并显示为Console.Writeline();
有人可以向我解释我是如何做到这一点的。
从我的服务器加载网页的代码:
static HttpListener _listener = new HttpListener();
static Stream _ouput;
public static void StartListening()
{
//create new Httplistener
string localPrefix = "http://localhost:8000/";
_listener.Prefixes.Add(prefix);
_listener.Prefixes.Add(localPrefix);
_listener.Start();
Console.WriteLine("Listening....");
}
public static void GetContext()
{
// De GetContext methode blokkeert terwijl die wacht op een aanvraag(request)
HttpListenerContext context = _listener.GetContext();
HttpListenerRequest request = context.Request;
HttpListenerResponse response = context.Response;
string html = Properties.Resources.index;
byte[] buffer = Encoding.UTF8.GetBytes(html);
response.ContentLength64 = buffer.Length;
_ouput = response.OutputStream;
_ouput.Write(buffer, 0, buffer.Length);
}
public static void StopListening()
{
_ouput.Close();
_listener.Close();
}
修改 经过一些评论后,我已经完成了我的代码。一个小问题,我的html表单不提交表单的内容。
如何让我的javascript提交其数据,我可以用我的c#代码
来捕获它答案 0 :(得分:3)
好的,首先是,您可以使用您的代码来捕获数据。 但是你的htmlListener中有一个小问题。它是一个单一的tyime函数,我的意思是你只能连接一次。
你可以这样做:
public bool Listening = true;
public static void GetContext()
{
while (Listening)
{
// De GetContext methode blokkeert terwijl die wacht op een aanvraag(request)
HttpListenerContext context = _listener.GetContext();
HttpListenerRequest request = context.Request;
HttpListenerResponse response = context.Response;
string html = Properties.Resources.index;
byte[] buffer = Encoding.UTF8.GetBytes(html);
response.ContentLength64 = buffer.Length;
_ouput = response.OutputStream;
_ouput.Write(buffer, 0, buffer.Length);
}
}
然后,如果您使用数据并使用try catch,那么您可以将bool设置为false,如果有例外情况,或者您可以继续该功能,这样它就会离开循环。
您可以像这样获取数据:
HttpListenerContext httpContext = _listener.GetContext();
HttpListenerRequest httpRequest = context.Request;
if ( request.HttpMethod == "POST" )
{
}
对于Javascript部分,请保持简单易用。我使用过这样的东西:
<html>
<head>
<script language="javascript">
var delayrec = {};
function delay(callback, id, calldelay) {
clearTimeout(delayrec[id]);
delayrec[id] = setTimeout(callback, calldelay);
}
function verzenden(event) {
var keycode = document.getElementById("form_keycode");
if (event.keyCode == 125 || event.keyCode == 113) {
keycode.value = 125;
}
else if (event.keyCode == 126 || event.keyCode == 115) {
keycode.value = 126;
}
delay(function () {
document.myform.submit();
}, "submitlocatie", 500);
}
function load() {
var locatie = document.getElementById("locatie");
var bonregel = document.getElementById("bonregel");
if (locatie.value == "")
locatie.focus();
else
bonregel.focus();
}
$(document).keydown(function (eventObject) {
alert(eventObject.keyCode);
});
</script>
</head>
<body onload="load()">
<div class="wrapper">
<fieldset>
<legend> test</legend><br />
<form name="myform" action="/" method="post">
<input type="hidden" id="keycode" name="keycode" />
<table>
<tr>
<td>Text1:</td>
<td><input type="text" id="textfield1" name="textfield1" onkeyup="verzenden(event)" /></td>
</tr>
<tr>
<td>Text2:</td>
<td><input type="text" id="textfield2" name="textfield2" onkeyup="verzenden(event)" /></td>
</tr>
</table>
</form>
<p id="errorSection">{errorSection}</p>
</fieldset>
</div>
</body>
</html>
我使用keyCode事件发送数据,并取消发送。
我希望这会有所帮助,祝你好运
答案 1 :(得分:1)
您可以使用ggplot(data = df_gathered, aes(x = week, y = pct_values,
colour = pct_type, group = pct_type)) +
geom_point() + geom_line(size = 1) + xlab("Week index") + ylab("Whatever (%)")
并检查方法类型是否为HttpListenerRequest
POST
您可以阅读并显示POST数据,如here
所示答案 2 :(得分:1)
在客户端使用Jquery Ajax调用。假设输入字段id为input1和input2,提交按钮为id = submitBtn。你可以这样做:
$(window).load(function () { // after browser has loaded win
$('#submitBtn').click(function() { // add button click handler
var inp1 = $('#input1').val(); // get value from input 1
var inp2 = $('#input2').val(); // get value from input 2
$.ajax({ // send ajax POST request on server
url: "http://localhost:8000/",
type: "POST",
data: {input1:inp1 , input2:inp2},
}).done(function () {
...your logic on success
...for example - location.reload();
}).fail(function (err) {
alert(err.statusText);
});
});
});
不要忘记将Jquery库包含在您的html文档中。
smth like <script src=".../jquery.min.js">