使用JavaScript将HTTP POST请求连接到onclick

3

我正在尝试使用JavaScript发起HTTP POST请求,并将其连接到onclick事件。

例如,如果有人点击了一个按钮,则向 http://www.example.com/?test=test1&test2=test2 发送HTTP POST请求。它只需要访问该URL并且可以关闭连接。

我在Python中进行了一些实验,并使其工作。

import urllib2
def hitURL():
    urllib2.urlopen("http://www.example.com/?test=test1&test2=test2").close

hitURL()

我在这个主题 JavaScript post request like a form submit 中了解到一些使用JavaScript进行HTTP请求的方法,但我认为这对我需要做的事情来说过于复杂了。
是否可能只需像这样说:
<button onclick=POST(http://www.example.com/?test=test1&test2=test2)>hello</button>
Or build it in to an event listener. 

我知道这并不是什么真实的东西,但我只是在寻找一个简单的解决方案,非技术人员可以使用、遵循指示并实施。

老实说,我怀疑是否有那么简单的解决方案,但任何建议都将不胜感激。


http://en.wikipedia.org/wiki/Same-origin_policy - zerkms
我想你想要通过调用一个包含关闭连接代码的php文件来关闭特定的javascript连接,是吗? - Airy
不一定,我从事分析工作,想要使用Google Analytics的新功能来跟踪我在其他网站上拥有的内容。新版本的Google Analytics可以使用HTTP POST请求将数据推送到其服务器 https://developers.google.com/analytics/devguides/collection/protocol/v1/ - NicoM
2个回答

7

您需要使用 XMLHttpRequest(请参见MDN)。

var xhr = new XMLHttpRequest();
xhr.open("POST", url, false);
xhr.onload = // something
document.getElementById("your_button's_ID").addEventListener("click",
    function() {xhr.send(data)},
    false
);

非常感谢Hardmath123!当我加载页面时它确实有效,但是在我点击按钮一次之后,会出现此错误“Uncaught InvalidStateError:Failed to execute 'send' on 'XMLHttpRequest':对象的状态必须为OPENED.off-site-tracking.html:17(匿名函数)”, 你知道如何更改代码以便我可以多次单击该按钮吗?再次感谢! - NicoM
如果您将第1-3行移至'xhr.send()'之前的function()块内,则该按钮应该变得可重用。 - Hardmath123

1
如果您可以引入JQuery库,那么我建议您研究一下jQuery的.ajax()方法(http://api.jquery.com/jQuery.ajax/)。
$.ajax("http://www.example.com/", {
    type: 'POST',
    data: {
      test: 'test1',
      test2: 'test2'
    }
  })

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接