0

此脚本根据表单数据创建一个 cookie,(例如:?docname=My Document

<script type="text/javascript">
{
var docname = getValue("docname"); // these go off another script to get form data
    var save = getValue("save");
    var url = window.location.href;
}
function setCookie(name, value, days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
        var expires = "; expires=" + date.toGMTString();
    }
    else var expires = "";
    document.cookie = name + "=" + value + expires + "; path=/";
}
function saveDoc() {
    if (docname != '') {
        setCookie(docname,url,730);
    }
    else {
     // Nothing else to do
    }
}
// Helps to find errors if they exist
window.onerror = function(errorMessage, url, line) {
    var errorText = 'message: ' + errorMessage + '\nurl: ' + url + '\nline: ' + line + ' please contact us, and report this error.';
    alert(errorText);
}
</script>

它创建 cookie 并将其名称设置为docname变量,但是当它将 url 设置为值时,它会切断表单数据。

我已经研究并更改了代码,但找不到答案,有人可以帮忙吗?

解决方案

<script type="text/javascript">
{
var docname = getValue("docname"); // these go off another script to get form data
    var save = getValue("save");
    var url = window.location.href;
    var recode = encodeURIComponent(url);

}
function setCookie(name, value, days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
        var expires = "; expires=" + date.toGMTString();
    }
    else var expires = "";
    document.cookie = name + "=" + value + expires + "; path=/";
}
function saveDoc() {
    if (docname != '') {
        setCookie(docname,recode,730);
    }
    else {
     // Nothing else to do
    }
}
// Helps to find errors if they exist
window.onerror = function(errorMessage, url, line) {
    var errorText = 'message: ' + errorMessage + '\nurl: ' + url + '\nline: ' + line + ' please contact us, and report this error.';
    alert(errorText);
}
</script>

更改了用于将值设置为的变量recode并将 recode 设置为等于,encodeURIComponent(url);因此它对 进行解码url,对其进行解码并使其可以在 cookie 的值或名称中包含表单数据等。感谢@epascarello

4

1 回答 1

1

encodeURIComponent()你的朋友在这里吗

document.cookie = name + "=" + encodeURIComponent(value) + expires + "; path=/";

当你得到它时,你需要用decodeURIComponent().

于 2013-05-09T19:18:03.167 回答