如何在 PHP 中使用 JavaScript 另存为函数?

Posted

技术标签:

【中文标题】如何在 PHP 中使用 JavaScript 另存为函数?【英文标题】:How to use JavaScript in PHP save as function? 【发布时间】:2015-07-02 06:16:43 【问题描述】:

我是 php 新手。我有一个表单,它有不同的提交按钮,如保存、编辑、取消和另存为。现在我想当用户单击另存为按钮时运行 java 脚本并检查文件名。如果数据库中已经存在同名文件,则显示警告消息“请更改文件名”如果用户更改文件名,然后执行按钮代码。 我使用按钮代码

<input type="submit" name="submit" value="Save as" onclick="show_confirm()" />
<input type="submit" name="submit" value="Make a copy" />

在 PhP 中

if($_POST['submit'] == 'Make a copy') 
        $action = "copy";
     elseif($_POST['submit'] == 'Save as') 
        $action = "save as";
    

可能是这样的java脚本

<script type="text/javascript">
    function show_confirm()
        
            var r=confirm("Please Change File Name!?");
            if (r==true)
                               
            
            else
                                
            
         
</script>

我的表单看起来像这样

现在我正在尝试为警报消息编写我的 Java 脚本,你能帮我解决我的问题吗?

【问题讨论】:

不要这样做,而是当用户选择要上传的文件时,向服务器发送AJAX请求并检查是否已经存在文件然后请求使用执行diff操作 我们不能使用相同的提交按钮名称两次 :) @Elangovan 哦,当然可以 @Umair 我的表单上没有文件上传选项 我的表单上没有文件上传选项`那么您要上传/保存或替换什么? :P 【参考方案1】:
<form action="program.php" method="post">
    Default value in this case: Maurize
    <input type="text" name="filename" placeholder="Username"/><br>
    <input type="submit" name="submit" value="Save as"/>
    <input type="submit" name="submit" value="Make a copy" />
</form>

现在您可以检查名称了:

<?php
$oldUsername = "Maurize"; //Will be triggered out of database

$newUsername = $_POST["filename"]; //This is from html
switch ($_POST['submit']) 
    case 'Save as':
        if ($oldUsername == $newUsername) //If the name is already present
            echo('<script>alert("Please change your filename because it already exists"); window.location.href = "index.html";</script>');
        
        else
            echo('<script>alert("Creating your filename was succesfully"); window.location.href = "index.html";</script>');
        
    break;
    case 'Make a copy':
        echo "make a copy";
    break;

?>

现在我们的标准表单位于顶部。如果我们提交这个,我们的 program.php 会被调用,如下所示。如果名字已经存在,我们会提醒他并将他送回页面。

【讨论】:

Maurize 我想要一些不同的东西。检查文件名后,我想在另存为按钮上显示警报消息 您必须先检查 php 中的文件名与您在数据库中的值。例如,如果此检查结果为 true,您可以触发 javascript。给我一点时间。 试试这个。是我得到的最快的解决方案。 让我们continue this discussion in chat。【参考方案2】:

不要使用同名的提交按钮,而是使用这些

<input type="button"  value="Save as" onclick="show_confirm(1)" />
<input type="button" value="Make a copy"  onclick="show_confirm(2)" />
<input type="hidden" value="" id="what_to_do" name="what_to_do" />
enter code here

在你的脚本中

<script type="text/javascript">
    function show_confirm(a)
    

        if (a == 1) 

            $("#what_to_do").val("save_as");
        
        if (a == 2) 

            $("#what_to_do").val("make_copy");
        

        // now submit form
        $('#myForm').submit();
    
</script>

在你的 PHP 方面

<?php

 // $_POST['what_to_do'] is actually this one -  <input type="hidden" value="" id="what_to_do" name="what_to_do" />
if ($_POST['what_to_do'] == 'make_copy') 
    $action = "copy";
 elseif ($_POST['what_to_do'] == 'save_as') 
    $action = "edit";

【讨论】:

警报信息在哪里?这个脚本如何检查文件名? 他使用 jquery,所以请确保您已将其链接在 head 中。检查我的代码以获得更好的解决方案。 @sunny 哪个字段是文件名? @Umair 看看我的表单第一个字段是文件名

以上是关于如何在 PHP 中使用 JavaScript 另存为函数?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PHP 和 Javascript Web 应用程序的打印对话框中禁用“另存为”选项。如果打印机已连接且未下载,则应出现该对话框

php,或js如何实现点击图片另存为

如何在“另存为”对话框中强制使用正确的文件扩展名? (.jpg 而不是 .php)

如何使用 javascript 将默认文件扩展名放在另存为对话框中?

如何使用Javascript实现不下载的保存和另存为?

PHP另存为PDF不起作用