0

这是我的 js 代码:

function check() {
    var delvar = "<? $_POST["del"]; ?>";
    var answer = confirm("Are you sure you want to delete the article?")
    if (answer) {
        window.location = "adm-site.php?del=" + delvar + "&delete=true";
    }
}

现在,我的问题是它delvar不起作用。所以 url 只是?del=&delete=true, 而不是 eg?del=testarticle&delete=true

编辑:$_POST["del"]是一个包含所有文章的选择标签,因此您将选择要删除
的 HTML 代码:

<select name="del">
    <option value="none" SELECTED></option>
    all articles echo'ed here by php
</select>
4

5 回答 5

2

我相信你想要这种情况:

  • 用户获得一个页面,其中包含一个包含选择标签的表单,该标签将所有文章作为值/选项。
  • 用户选择他/她想要删除的文章。
  • 用户单击一个按钮。
  • 然后你想将用户重定向到 URL adm-site.php?del=02&delete=true

因此,在这种情况下,只有 JavaScript 会获取所选文章值的值并将其嵌入重定向 URL。所以,PHP 在这里什么也做不了。所有的动作都发生在客户端。

试试这个 HTML 代码:

<html>
<head>
<script language="JavaScript">
    function check(){
        var delvar=document.form1.del.options[document.form1.del.selectedIndex].value;
        //alert(delvar); //debug
        var answer = confirm("Are you sure you want to delete the article?")
        if (answer) {
            //alert("adm-site.php?del=" + delvar + "&delete=true");
            window.location = "adm-site.php?del=" + delvar + "&delete=true";
        }

    }
</script>
</head>
<body>
<form name="form1">
    <select name="del">
        <option value="none" SELECTED>None</option>
        <option value="01">Article 01</option>
        <option value="02">Article 02</option>
        <option value="03">Article 03</option>
    </select>
<input type="button" value="Delete This Article" onclick="check();">
</form>
</body>
</html>

JSFiddle.net 上的现场演示(警告重定向 URL)

我编辑/更改的内容:

  • form为标签添加了名称。
  • 更改了为 vardelvar分配当前所选文章的值的方式。

否则,所有代码都与您的代码相同。

正如Pheonix所提到的,一个有点安全的代码,做和上面一样的事情,但是使用 $_POST。您需要使用$_POST 数组而不是$_GET在您的adm-site.php.

<html>
<head>
<script language="JavaScript">
    function check(){
        var delvar = document.form1.del.options[document.form1.del.selectedIndex].value;
        var agree = confirm("Are you sure you want to delete Article " + delvar + " ?");
        if (agree)
            return true ;
        else
            return false ;
    } //function check() ENDS
</script>
</head>
<body>
<form name="form1" action="adm-site.php" method="POST">
    <select name="del">
        <option value="none" SELECTED>None</option>
        <option value="01">Article 01</option>
        <option value="02">Article 02</option>
        <option value="03">Article 03</option>
    </select>
    <input type="hidden" name="delete" value="true" />
    <input type="submit" name="submit" value="Delete this Article" onClick="return check();" />
</form>
</body>
</html>

JSFiddle.net 上的演示

于 2012-07-28T15:15:13.147 回答
1
var delvar = '<?php echo $_POST["del"]; ?>';

注意<?php而不是不鼓励的短代码。

于 2012-07-28T15:05:49.037 回答
0

这是另一种思考方式:创建一个指向您要发送到的页面的链接,然后给它一个onclick这样的:

<a href="/adm-site.php?del=<?php echo $_POST['del']; ?>&delete=true" onclick="return confirm('Confirm Deletion?')" >Delete</a>

这可行,但它可能不适合您的环境,具体取决于触发器check()

于 2012-07-28T16:20:00.833 回答
0

您的 HTML 包含"因此您需要用单个撇号包围 PHP。如果您使用的是短标签,请正确使用它。所以最后,它应该是这样的:

var delvar = '<?= $_POST["del"]; ?>';
于 2012-07-28T15:43:11.150 回答
0
var delvar = "<? $_POST["del"]; ?>"; 

您正在尝试将 javascript 和 php 结合起来,但我们没有这种可能性,因为 javascript 是客户端脚本语言,PHP 是服务器端脚本语言。还有另一种结合javascript和php的方法。请参考此链接

于 2012-07-29T14:13:29.553 回答