0

我网站上的用户输入表单将值发送到位于不同服务器上的脚本:

<form action="https://mycompany.formprocessor.com/script/" method="post" name="MyForm" onsubmit="return myFunction();">等等

我正在使用修改后的功能重新创建该表单。我没有直接发送表单值,而是将它们保存在 cookie 中,然后,当某个事件发生时,我想将该 cookie中的输入值发送到位于作为 action 属性值提供的 url 处的脚本。

像这样的东西:

on event {
 // send cookie value to https://mycompany.formprocessor.com/script/ using "post" method;
}

如何才能做到这一点?

4

4 回答 4

1

首先,您需要使用一些 cookie 函数将值存储在 cookie 中,然后访问您保存在这些 cookie 中的输入值。一些带有解释如何使用它们的 cookie 函数在这里: http: //www.codelib.net/javascript/cookies.html

然后,您将需要一种跨域发送数据的方法。为此,我建议您使用包含隐藏字段的表单,然后将该表单提交给其他服务器。

像这样:

<form method="post" action="https://mycompany.formprocessor.com/script/">
<input type="hidden" id="hiddendata" name="data" />
</form>

<script>
function onEvent() { /* call this function when your desired event happens */
  var cookiedata = readCookie('cookiename');
  var datafield = document.getElementById('hiddendata');
  datafield.value = cookiedata;
  datafield.form.submit();
}
</script>

请注意,我建议您将程序作为其 HTTP 状态代码formprocessor返回204 No Content,这样文档本身就不会被重置。否则浏览器会将当前页面替换为https://mycompany.formprocessor.com/script/数据提交后的内容。这是一种不阻塞跨域请求的 AJAX 方式。

仅当您满足于使用GET请求将数据发送到服务器时,以下方法才有效。

您可以将src页面上包含的元素(如元素img)的属性设置为这样的 URL(初始图像来自http://commons.wikimedia.org/wiki/File:1x1.png

<img id="hiddenimage" width="1" height="1" src="1x1.png" />

<script>
function onEvent() { /* call this function when your desired event happens */
  var cookiedata = readCookie('cookiename');
  var dataimage  = document.getElementById('hiddenimage');
  dataimage.src = 'https://mycompany.formprocessor.com/script/?data=' + encodeURIComponent(cookiedata);
}
</script>
于 2013-06-26T18:00:54.427 回答
1

首先,您需要使用一些 cookie 函数将值存储在 cookie 中,然后访问您保存在这些 cookie 中的输入值。一些带有解释如何使用它们的 cookie 函数在这里: http: //www.codelib.net/javascript/cookies.html

然后,您将需要一种跨域发送数据的方法。为此,我建议您使用包含隐藏字段的表单,然后将该表单提交给其他服务器。

像这样:

<script>
function onEvent() { /* call this function when your desired event happens */
  var cookiedata = readCookie('cookiename');
  var datafield = document.getElementById('hiddendata');
  datafield.value = cookiedata;
  datafield.form.submit();
}
</script>

请注意,我建议您让程序返回 204 No Content 作为其 HTTP 状态代码,这样文档本身就不会被重置。否则浏览器会将当前页面替换为https://mycompany.formprocessor.com/script/数据提交后的内容。这是一种不阻塞跨域请求的 AJAX 方式。

我将描述另一种无需提交表单即可发送跨域请求的方式...请稍候。

仅当您满足于使用GET请求将数据发送到服务器时,以下方法才有效。

您可以将src页面上包含的元素(如元素img)的属性设置为这样的 URL(初始图像来自http://commons.wikimedia.org/wiki/File:1x1.png

<img id="hiddenimage" width="1" height="1" src="1x1.png" />

<script>
function onEvent() { /* call this function when your desired event happens */
  var cookiedata = readCookie('cookiename');
  var dataimage  = document.getElementById('hiddenimage');
  dataimage.src = 'https://mycompany.formprocessor.com/script/?data=' + encodeURIComponent(cookiedata);
}
</script>
于 2013-06-26T17:58:45.590 回答
0

答案取决于如何设置接受值的脚本。对于存储和检索值,balaji 的建议已经足够好了。位于此处的插件使在 cookie 中存储和检索值变得非常容易。

因此,例如,如果您将值发送到的函数是这样的:

public void myFunction(firstValue, secondValue){
   // logic here
}

那么您发送值的方式是这样的:

https://mycompany.formprocessor.com/script/firstValue="value_from_cookie"?secondValue="value_from_cookie"
于 2013-06-26T17:56:01.817 回答
0

您可以使用“document.cookie”获取 cookie 中设置的值。

更新:

var cookievalue= document.cookie;
var xmlhttp= new XMLHttpRequest();
var url="https://example.com/path?value="+cookievalue;
xmlhttp.open("POST",url,false);
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
xmlhttp.send();
于 2013-06-26T16:56:38.837 回答