从onSubmit提示符到PHP GET的值

时间:2017-02-02 10:26:05

标签: javascript php ajax

我有一个modifypassword表单,可以为用户修改平面文件中的密码。(我知道它不安全等)。

所以问题是:每当我点击我网站上的修改密码时,我都会收到一个要求输入新密码的提示。一切都很好,之后它会提交表格。但我无法以某种方式输入变量。我想$ _GET [' newpw']所以我可以用它来调整我的平面文件。

所以我有一个这样的表格:

echo "<td> <form action=\"admin.php\" method=\"GET\" onsubmit=\" modifyPassword();\">

这是modifyPassword函数:

<script type="text/javascript">
    function modifyPassword() {
        var newpw=prompt("Enter a new password");
        if(newpw !== null) {
            $.ajax({
                type: "GET",
                url: "admin.php",
                data: {data: newpw},
                success: function(data) {
                    console.log(data);
                }
            });
        }
    }
</script>

当表单实际提交时,我希望从输入的内容中获取值,如下所示:

echo $_GET['data'];

这都在同一个文件中。 $ _GET [&#39;数据&#39;]的输出没有显示任何内容。 当我选择静态密码时,其余的工作正常:&#34; test&#34;。它会更新我的平面文件,但我希望获得用户输入来更改密码。

有人能告诉我我做错了吗?

2 个答案:

答案 0 :(得分:0)

我认为基本问题可能是,你有onsubmit事件处理程序,但无论如何都要提交表单。所以实际的提示没有机会执行。

您应该添加return false;或管理modifyPassword()方法中的逻辑。

例如,这可能有助于停止提交表单: echo "<td> <form action=\"admin.php\" method=\"GET\" onsubmit=\"modifyPassword(); return false;\">"

如果您想以标准方式提交表单,只需更改密码,只需更改输入值即可。

修改表单:echo "<td> <form action=\"admin.php\" method=\"GET\" onsubmit=\"modifyPassword(this)\"><input type=hidden name=newpw />"

然后更改javascript:

<script type="text/javascript">
function modifyPassword(passForm)
        {
            var newpw = prompt("Enter a new password");
            if (newpw !== null)
            {
                passForm.newpw.value = newpw;
            }
        }
</script>

然后你应该在$_GET['newpw']中使用php中的值。

答案 1 :(得分:0)

您当前的PHP代码:

}elseif (isset($_GET['Modify'])){ echo $_GET['data'];

但是根据Ajax请求代码,您不会发送Modify参数,因此$_GET['Modify']未设置,因此条件返回false并且永远不会到达echo $_GET['data'] {1}}部分。

您需要向data添加另一个参数,如下所示:

<强> JS

<script type="text/javascript">
                        function modifyPassword(){

                            var newpw=prompt("Enter a new password");
                            if(newpw !== null){
                                $.ajax({
                                    type: "GET",
                                    url: "admin.php",
                                    data: {action: 'modifypass', data: newpw}, //Added another parameter.
                                    success: function(data)
                                    {
                                        console.log(data);
                                    }
                                });
                            }}
                        </script>

<强> PHP

 elseif (isset($_GET['action']) && $_GET['action'] == "modifypass"){
    echo $_GET['data'];