我正在尝试将我的变量发送到php文件,我想在提交之前提示让用户在提交之前输入他的名字。页面不会重定向到php页面,如下所示。任何想法为什么它不重定向?我是否需要包含一个jquery或其他一些我不了解的脚本源
var name = prompt("Enter your name to submit score");
window.location.href = "test.php?time="+sec+"&name="+name+"&moves="+number_moves;
当在带有get函数的php页面上测试它时,如果名称变量不是第一个,它似乎只能起作用。如果我有名字,时间,移动我会得到错误。
答案 0 :(得分:6)
确定查询字符串分隔符有错误。替换?
以外的所有&
除window.location.href = "test.php?time="+sec+"&name="+name+"&moves="+number_moves;
{{1}}
答案 1 :(得分:1)
首先,您实际上没有发布它们,因为使用此代码通过GET方法发送它们。但那是精确的。
现在你的问题很可能是你应该写的:
window.location.href = "test.php?time="+sec+"&name="+name+"&moves="+number_moves;
请注意参数之间的&
分隔符,其中第二个错误?
答案 2 :(得分:1)
正如其他人提到的那样,你需要将你的URI参数与&符号分开,而不是问号。
此外,建议您对用户收到的值进行编码,因为您永远不知道他们是否会使用您不期望的值来破坏您的代码。
这可以使用encodeURIComponent
方法完成:
var name = window.prompt('Enter your name'),
url = 'test.php' +
'?time=' + sec +
'&name=' + encodeURIComponent(name) +
'&moves=' + number_moves;
location.href = url;
在MDN上阅读有关此功能的更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent
*将时间变量修正为src
答案 3 :(得分:0)
您只需要一个问号。之后,应使用&分隔多个变量。符号:
window.location.href = "test.php?time="+sec+"&name="+name+"&moves="+number_moves;
希望这有帮助!
答案 4 :(得分:0)
您必须使用&分隔查询字符串参数。而不是?。
var name = prompt("Enter your name to submit score"); window.location.href = "test.php?time="+sec+"&name="+name+"&moves="+number_moves
恕我直言,请考虑使用AJAX POST向服务器发送值,因为它们容易受到安全攻击。
答案 5 :(得分:0)
现在您修复了分隔符,通过url传递的所有变量都被认为是GET变量,因此它们将位于php中的$ _GET全局变量中。
要获取全局$ _POST变量中的变量,您需要使用方法设置为post的表单或发布它们的ajax请求。
HTML
<form id="myform" method="post" action="test.php" method="POST">
<input type="text" name="name" id="nameInput">
<input type="text" name="moves" id="movesInput">
<input type="text" name="time" id="timeInput">
<input type="submit" value="Submit">
</form>
您仍然可以通过javascript修改输入的值,但您需要使用DOM api方法。有很多DOM方法,所以在线浏览各种参考文献,如mozilla developers network site
document.getElementById("nameInput").value = "Some Name";
//Though i wouldnt suggest using prompts to get
//data you can still do it
document.getElementById("nameInput").value = prompt("Enter your name");
如果需要,还有从javascript提交表单的方法
document.getElementById("myform").submit();
至于为什么你的页面在更改href之后没有改变,这可能是由于你的javascript中的一个错误实际上使得javascript语句改变了href而不是实际执行。您可以通过查看javascript控制台来检查错误。
控制台将位于开发人员工具窗口中,通常通过在Chrome和IE上点击F12打开,firefox和其他将具有不同的快捷键。如果您的提示出现,那么错误必须与它下面的字符串连接一起出现,如果变量未定义则会出错。
//Will error out because there is no variable someNameVar...
location.href = "test.php?name="+someNameVariableThatDoesntExist;
//in console would see something like
//ReferenceError: someNameVariableThatDoesntExist is not defined
答案 6 :(得分:0)
您需要将sec和number_moves声明为变量。这是我测试时遇到的唯一问题。