用PHP代码实现的JavaScript | if语句不起作用

时间:2016-05-05 17:10:49

标签: javascript php

我有点问题,似乎无法发现我的错误。 原因如下:

我想使用一个简单的PHP if语句来检查我的表单是否已经提交,如果有,请打开一个JavaScript确认对话框,最终从数据库中删除。但是代码总是在错误的声明中出现,它说:“删除已被取消。” (以下代码)。 谢谢你的时间。

PHP代码:

if (!isset($_POST['delButton'])){
echo "Selection is followed by a confirming window.";
  }
  else if(isset($_POST['delButton']) && isset($_POST['s_name'])){
if(jsconfirm()){
  $sql = MySQL_query("DELETE FROM table_1 WHERE name = \"".$_POST['s_name']."\"");
    if($sql){
      jsalert("Entry has been deleted!");
    }else{
      jsalert("Deleting went wrong.");
    }
}else{
  jsalert("Deleting has been cancelled.");
}
  }

使用Javascript:

function jsalert($s) {
    echo "<script>";
    echo "alert(\"".$s."\");";
    echo "</script>";
  }

  function jsconfirm(){
    echo "<script>";
    echo "if(confirm(\"Delete Account?\")){return true;}else{return false;}";
    echo "</script>";
  }

2 个答案:

答案 0 :(得分:1)

这并不是说你的if语句不起作用。它并不是你在JS和PHP之间进行实际沟通。

使用PHP脚本加载页面时,echo出的内容将成为页面内容。

例如,这个PHP会产生这个HTML / JS:

<?php
echo "<script>";
echo "alert('hello');"
echo "</script>";
?>

-

<script>
alert('hello');
</script>

如果您提供此文件,您会看到一个页面,其中会显示一个说明'hello'的提醒框。但是在你的PHP代码完成运行之前,JS代码不会执行所以你的JS根本不会与PHP通信。

如果您希望在服务器上发生某些事情,因为使用JS完成了某些事情,那么您将需要使用AJAX。互联网上有很多关于这个主题的教程,因为它对于Stack Overflow答案来说往往有点宽泛。

答案 1 :(得分:0)

也许这会有所帮助。我自己是初学者,但这就是我解决这个问题的方法:

您尚未提供HTML表单,但我有一个简单的示例。这可以是您朋友的名字列表和删除按钮以从朋友列表中删除它们。基本的HTML看起来像这样:

<!DOCTYPE html>
<html>
<body>
<form>
<p>Peter</p><button>Delete</button>
<p>Frank</p><button>Delete</button>
<p>John</p><button>Delete</button>
</form>

您最终希望此表单向PHP函数提交数据。因此,您需要告知表单在提交时将信息发送到何处。这是在表单的开头标记内完成的,如第4行所示。

<!DOCTYPE html>
<html>
<body>
<form action="test.php" method="post" id="myForm">//meaning I'm sending the data in the form by *POST* to the file *test.php* in the same folder. The file test.php contains the php code that will update the database.
<p>Peter</p><button >Delete</button>
<p>Frank</p><button >Delete</button>
<p>John</p><button >Delete</button>
</form>

然后你必须有一个按钮来实际触发提交动作。您可以将该功能添加到每个删除按钮,如下所示。

<!DOCTYPE html>
<html>
<body>
<form action="test.php" method="post" id="myForm">
<p>Peter</p><button type="submit" >Delete</button>
<p>Frank</p><button type="submit" >Delete</button>
<p>John</p><button type="submit" >Delete</button>
</form>

因此,如果你现在点击删除,数据将被发布到你的php文件。但是你不希望这种事发生!您希望首先向您的用户提供弹出窗口并获得确认。所以你让按钮触发一个JS函数,如下所示:

<!DOCTYPE html>
<html>
<body>
<form action="test.php" method="post" id="myForm">
<p>Peter</p><button type="submit" onclick="jsalerts()">Delete</button>
<p>Frank</p><button type="submit" onclick="jsalerts()">Delete</button>
<p>John</p><button type="submit" onclick="jsalerts()">Delete</button>
</form>

因此,只要单击“删除”按钮,就会执行函数jsalerts()。这当然应该创建确认框。基本功能可以这样工作(从www.w3schools.com上的JS教程修改):

function jsalerts() {
if (confirm("Press a button!") == true) {
    alert("Deleting has been confirmed.");
} else {
    alert("Deleting has been cancelled.");
}
}

麻烦的是,此功能不会停止提交操作。因此,无论用户的选择如何,都将提交表单。如果用户点击取消,那不是你想要的。另一方面,如果用户点击确认,您不想为他提供提醒,您只需要表单继续提交。

所以基本上你想要阻止默认行为&#34;提交&#34;如果用户单击“取消”,则显示“删除”按钮并且JS有一个方法,毫不奇怪地称为preventDefault方法。你可以像这样实现它:

function jsalerts() {
if (confirm("Press a button!") == false) {
    alert("Deleting has been cancelled.");
event.preventDefault();
} 

因此,除非用户点击取消,否则将开始提交表单的正常过程。

这意味着在您的PHP中,您只需要创建更新数据库逻辑,而不必为取消或确认而烦恼。

所以,要把它包起来,这将是你的HTML:

<!DOCTYPE html>
<html>
<body>
<form action="test.php" method="post" id="myForm">
<p>Peter</p><button type="submit" onclick="jsalerts()">Delete</button>
<p>Frank</p><button type="submit" onclick="jsalerts()">Delete</button>
<p>John</p><button type="submit" onclick="jsalerts()">Delete</button>
</form>

这将是你的JavaScript:

function jsalerts() {
if (confirm("Press a button!") == false) {
    alert("Deleting has been cancelled.");
event.preventDefault();
} 

让我知道它是否有效。如果任何更有经验的编码人员有投入可以改善我的工作,请发表评论。感谢。