我正在查看外部网站的html表单(不是由我自己维护),格式如下:
<form onsubmit="return check(this)" method=post action=address.aspx target=ttPOST>
....
</form>
我希望将数据发布到此外部网站,而无需通过表单并按提交。
我可以直接转到网址'address.aspx'并使用所需的输入参数附加它吗?
我的目标是自动定期发布信息,从网站上经常变化的值列表中选择。 (使用Python和AutoIt)
答案 0 :(得分:1)
我应该注意到,我不清楚你是否想要自动从网络浏览器外部发布数据。其他人已经回答了使用脚本这样的事情,比如来自网页,所以当我从一个独立程序中做这件事时,我想我会介绍它是如何工作的。
对于大多数语言,您可以获得有助于模拟Web请求的内容。其中大部分可能会允许您发布帖子请求并提供帖子数据。我不知道python和autoit但是在一般意义上你只需要通过查看表单的HTML来获取名称值对(或者通过检查对服务器的请求可能更好)然后制作一个发布请求。
正如其他人所说,如果您只想将值附加到网址,那么服务器将需要乐意接受GET请求而不是帖子。有时您会发现服务器会愉快地执行此操作(他们不关心表单提交是如何完成的,只要他们获取数据),有时它将专门查找帖子并忽略作为查询字符串的一部分传递的参数
答案 1 :(得分:1)
您可以使用JQuery.post()
<form action="#" class="myForm" method="post">
<input type="text" id="field1" name="field1" value="" runat="server" />
</form>
// Submit
<div onclick="submit();return false;">Submit</div>
然后submit()函数看起来像
function submit() {
$.post("address.aspx", $("form.myForm").serialize(), function(data, textStatus)
{
// Handle success or error
});
}
在代码隐藏中,您可以访问帖子变量
Request.Form["field1"]
答案 2 :(得分:0)
将method
属性从POST
更改为GET
。
了解差异here。
您可以使用GET
参数(?param1=val1¶m2=val2...
)的相同语法更改URL以转到外部站点,但要实现此目的,您需要在javascript中自己编写此逻辑
答案 3 :(得分:0)
为什么要绕过表单提交?提交表单并使用HTTP_POST中的值。您可以通过在上面的html中将方法更改为GET来使用HTTP_GET,但表单仍将提交。
将params提交到address.aspx的一种方法是使用javascript ....构建所有参数的字符串,并在用户点击提交按钮时将其提交到address.aspx。您需要禁用提交按钮的默认行为。
答案 4 :(得分:0)
您可以发出AJAX GET请求(将数据附加到URL)并以一定的时间间隔执行它们。
我会推荐jQuery,但在.NET环境中可能并不理想。
jQuery.ajax() - http://api.jquery.com/jQuery.ajax/
jQuery.get() - http://api.jquery.com/jQuery.get/
注意:
我希望将数据发布到此外部网站,而无需通过表单并按提交。
我认为这意味着您不想实际提交表单,是否要提交表单而不是按提交按钮?如果您确实希望表单提交,那么您确实应该将表单的method
属性更改为get
而不是post
。
但是,如果您确实希望保留在表单页面上,并且需要将数据发布到URL字符串中的数据的其他资源(有理由和aganist这样做,您应该查看 - {{3然后只需发出一个AJAX GET请求,否则只需使用AJAX POST数据。无论哪种方式,你都必须进行某种异步调用。
答案 5 :(得分:0)