Javascript 不设置 Cookie
Javascript Not Setting Cookies
我正在尝试使用 Java脚本设置 cookie。这段代码一直在运行,直到最近,当我开始获取 null
作为 cookie 的值时。我真的不确定我可以改变什么来导致这个。这是我的 HTML
:
<div class="w3-container w3-center" style="align-content:center;">
<br>
<br>
<h1 class="w3-center w3-jumbo">Find a Fruit Here</h1>
<form method="post" name="input-form" id="input-form" class="w3-center w3-mobile">
<h4 class="w3-center" style="max-width:1000px;align-content:center;">
<label>Address</label>
</h4>
<input id="input-address" style="max-width:300px;margin-left:auto;margin-right:auto" class="w3-center w3-input w3-border" name="Address" placeholder="123 45th Street, City, State" required>
<h4 class="w3-center" style="max-width:1000px;">
<label>Fruits(at least one)</label>
</h4>
<input id="input-items" style="max-width:300px;margin-left:auto;margin-right:auto" class="w3-center w3-input w3-border" name="Items" placeholder="Apples, bananas, etc." required>
<h4>
<button style="max-width:250px;margin-left:auto;margin-right:auto" class="w3-button w3-black w3-round w3-hover-light-grey w3-center" type="submit" onclick="cookies()">
Search
</button>
</h4>
</form>
<br>
</div>
这是我的 Java脚本。我已经添加了一个日志行来测试,但是它永远不会打印到控制台,所以我想我可能在调用函数时遇到问题。
<script>
function cookies() {
document.getElementById("input-form").submit();
document.cookie = "address=" + document.getElementById("input-address").value.replaceAll(",", "/");
document.cookie = "items=" + document.getElementById("input-items").value.replaceAll(",", "/");
}
</script>
非常感谢任何帮助!!我很茫然。
编辑:
我正在使用 Javalin 在 Java 程序中访问我的 cookie,这就是我看到它们为空的地方。我在 Javalin 中呈现文档,然后尝试访问 cookie,然后得到 NullPointerException。这是 Java 代码:
app.get("/search", ctx -> ctx.render("/donation-find.html"));
app.post("/search", ctx -> {
ctx.render("/donation-find.html");
address = ctx.cookie("address").replaceAll("/", ",");
String[] temp = ctx.cookie("items").split("/");
}
您在 Javascript 上更新 cookie 之前提交表单。
所以实际的 POST 请求是在 cookies 更新
之前发送的
我认为你应该这样做
function cookies() {
document.cookie = "address=" + document.getElementById("input-address").value.replaceAll(",", "/");
document.cookie = "items=" + document.getElementById("input-items").value.replaceAll(",", "/");
}
document.getElementById("input-form").submit();
我认为这会有所帮助
我不知道
之前它是如何工作的
最好的猜测是它正在拉取旧的会话 cookie
为了澄清起见,我最终通过使用完全不同的数据传输方法解决了问题。我没有使用 cookie,而是使用 Javalin 内置方法 formParam(key)
来访问发布到表单的数据
我正在尝试使用 Java脚本设置 cookie。这段代码一直在运行,直到最近,当我开始获取 null
作为 cookie 的值时。我真的不确定我可以改变什么来导致这个。这是我的 HTML
:
<div class="w3-container w3-center" style="align-content:center;">
<br>
<br>
<h1 class="w3-center w3-jumbo">Find a Fruit Here</h1>
<form method="post" name="input-form" id="input-form" class="w3-center w3-mobile">
<h4 class="w3-center" style="max-width:1000px;align-content:center;">
<label>Address</label>
</h4>
<input id="input-address" style="max-width:300px;margin-left:auto;margin-right:auto" class="w3-center w3-input w3-border" name="Address" placeholder="123 45th Street, City, State" required>
<h4 class="w3-center" style="max-width:1000px;">
<label>Fruits(at least one)</label>
</h4>
<input id="input-items" style="max-width:300px;margin-left:auto;margin-right:auto" class="w3-center w3-input w3-border" name="Items" placeholder="Apples, bananas, etc." required>
<h4>
<button style="max-width:250px;margin-left:auto;margin-right:auto" class="w3-button w3-black w3-round w3-hover-light-grey w3-center" type="submit" onclick="cookies()">
Search
</button>
</h4>
</form>
<br>
</div>
这是我的 Java脚本。我已经添加了一个日志行来测试,但是它永远不会打印到控制台,所以我想我可能在调用函数时遇到问题。
<script>
function cookies() {
document.getElementById("input-form").submit();
document.cookie = "address=" + document.getElementById("input-address").value.replaceAll(",", "/");
document.cookie = "items=" + document.getElementById("input-items").value.replaceAll(",", "/");
}
</script>
非常感谢任何帮助!!我很茫然。
编辑: 我正在使用 Javalin 在 Java 程序中访问我的 cookie,这就是我看到它们为空的地方。我在 Javalin 中呈现文档,然后尝试访问 cookie,然后得到 NullPointerException。这是 Java 代码:
app.get("/search", ctx -> ctx.render("/donation-find.html"));
app.post("/search", ctx -> {
ctx.render("/donation-find.html");
address = ctx.cookie("address").replaceAll("/", ",");
String[] temp = ctx.cookie("items").split("/");
}
您在 Javascript 上更新 cookie 之前提交表单。
所以实际的 POST 请求是在 cookies 更新
之前发送的
我认为你应该这样做
function cookies() {
document.cookie = "address=" + document.getElementById("input-address").value.replaceAll(",", "/");
document.cookie = "items=" + document.getElementById("input-items").value.replaceAll(",", "/");
}
document.getElementById("input-form").submit();
我认为这会有所帮助
我不知道
之前它是如何工作的
最好的猜测是它正在拉取旧的会话 cookie
为了澄清起见,我最终通过使用完全不同的数据传输方法解决了问题。我没有使用 cookie,而是使用 Javalin 内置方法 formParam(key)
来访问发布到表单的数据