来自Bookmarklet的Ajax调用

时间:2009-03-20 01:31:08

标签: javascript ajax bookmarklet

我正在尝试创建一个bookmarklet,在点击后,会从用户请求一些信息(在这种情况下是一个url和其他几个字段),然后将该数据发送到我服务器上的php页面,然后显示结果

我想为此做一个Ajax调用,这样我实际上不会重定向到新页面,只是获取数据,但我想我会遇到Ajax的“同源策略”限制....是否有任何已知的方法基本上做同样的事情?

另外,传递参数的最佳方法是什么?我已经有了一个机制来接收参数作为来自表单的帖子消息......有什么方法可以重用它吗?

2 个答案:

答案 0 :(得分:6)

您可以通过创建书签来设置书签,并在下面的位置添加该段代码,但是,根据same origin policy limitation,只有在当前标签位于同一位置时才会生效,{{3 }}

如果我完全理解你的需求,那对你的问题应该没问题。

var request = new XMLHttpRequest();
request.open("GET", "http://www.google.com", true);
request.onreadystatechange = function() {
  var done = 4, ok = 200;
  if (request.readyState == done && request.status == ok) {
    if (request.responseText) {
      alert(request.responseText);
    }
  }
};
request.send(null);

我不知道POST是否有效。

答案 1 :(得分:1)

您将无法发布帖子,但GET可以正常使用。如果您使用的是jQuery,它只会创建一个带有src URL的脚本标记,该标记会发送您想要提交的数据。

您必须返回JSON样式数据。

请参阅:http://docs.jquery.com/Ajax/jQuery.getJSON

或者,您的书签可以在页面上创建一个iframe,如果您不想在iframe和页面本身之间进行通信,那么这可以帮助您提交数据(您可以使用post)只需使用用户输入即可提交。