将变量从javascript发布到php

时间:2014-04-11 12:21:13

标签: javascript php

我正在尝试将我的变量发送到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页面上测试它时,如果名称变量不是第一个,它似乎只能起作用。如果我有名字,时间,移动我会得到错误。

7 个答案:

答案 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声明为变量。这是我测试时遇到的唯一问题。