【问题标题】:submit always redirect to same page action doesnt work提交总是重定向到同一页面操作不起作用
【发布时间】:2016-12-14 01:25:42
【问题描述】:

我正在创建一个表单,该表单将使用选择选项更改/更新我的票证状态,但每当我提交时。它只是进入自我页面。这是地址“http://localhost/support/admin-post.php?td=10&id=1”当我点击提交时,这将发生“http://localhost/support/admin-post.php?ticketstats%5B%5D=Pending#”。它应该转到“status-update.php”。我尝试将其放入仍然无法正常工作,我尝试使用但无法获得选择值,这就是我选择 php 方法的原因,这是我的代码

<div class="hide" id="status">
            <form id="myform" role="form" action="ticket.php" method="POST">
        <select class="form-control" type="text" name="ticketstats[]">
            <option><?php echo $status ?></option>
            <option class="disabled">--------------</option>
            <option value="Pending">Pending</option>
            <option value="Open">Open</option>
            <option value="Closed">Closed</option>
        </select> 
            <input class="btn pull-right" type="submit"> 
            <a class="btn pull-left" id="cancelstatus" href="#">Cancel</a>
            </form>
    </div>

<?php
if(isset($_POST['submit'])){

    foreach ($_POST['ticketstats'] as $select)
    {

        echo "<script>window.open('status-update.php?    td=$ticketid&id=$empinfoid&stats=$select','_self')</script>";
    }
}
?>


    <a class="pull-right" id="editstatus" href="#">Change</a>
    <div id="status-duetime" class="post-footer"><?php echo time_elapsed_ago($date) ?> </div>
</div>
</div>

这是我的 main.js

var change = document.querySelector("#editstatus");
var cancel = document.querySelector("#cancelstatus");
var statuss = document.querySelector("#status");
var nowstatus = document.querySelector("#nowstatus");
var statusduetime = document.querySelector("#status-duetime");


change.addEventListener("click",edits)
cancel.addEventListener("click",edits)

function edits() {
if (statuss.className === "hide") {
    statuss.className = "";
    statusduetime.className = "hide";
    nowstatus.className = "hide";
    change.className = "hide";
} else {
    statuss.className = "hide";
    statusduetime.className = "post-footer";
    nowstatus.className = "pending";
    change.className = "pull-right";
}

}

这是我的操作 status-update.php

<?php
include("database/db_conection.php");   

$ticketid = $_GET['td'];
$empinfoid = $_GET['id'];

if($_POST) {
$sql = "UPDATE employee_tickets SET TicketStatus='".$_GET['stats']."'         WHERE Id='".$_GET['td']."'";


if (!mysqli_query($conn,$sql)) {
die('Error: ' . mysqli_error($conn));
}

echo "<script>window.open('admin-post.php?td=$ticketid&id=$empinfoid','_self')</script>";
$conn->close();

}
?>

【问题讨论】:

    标签: javascript php jquery html forms


    【解决方案1】:

    如果你没有给提交按钮一个 name="???" 属性,你就不能在你的 PHP 中测试它

    所以把这一行改成

    <input name="submit" class="btn pull-right" type="submit"> 
           ^^^^^^^^^^^^^
    

    你的 PHP 中的这一行

    if(isset($_POST['submit'])){
    

    会有一些东西要测试。

    去掉这一行的空格也是个好主意

    echo "<script>window.open('status-update.php?    td=$ticketid&id=$empinfoid&stats=$select','_self')</script>";
                                                 ^^^^
    

    你的表单action="ticket.php" 也不会运行脚本status-update.php 它将运行ticket.php

    【讨论】:

    • 试过了,但还是一样,但我输入的名称也显示了“localhost/support/…”......我意识到在“
      ”真的不起作用,我试过了不同的 .php 网站仍然无法正常工作。你想看完整的代码吗?
    • 没有。顺便说一句,您发布的 localhost 链接对不在您 PC 上的任何人都无用
    • 是的,因为公司将通过本地 xampp 使用它。我只是在职培训学生。
    • 对不起,我解决了,有一个额外的代码干扰了我的代码,所以这就是为什么我的提交按钮自己采取行动
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-14
    • 2018-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多