【问题标题】:How to run a seperate PHP file using a Button (Not a submit button inside a <form>)如何使用按钮运行单独的 PHP 文件(不是 <form> 中的提交按钮)
【发布时间】:2018-03-19 06:09:35
【问题描述】:

我有这个button,它不是submit 按钮,只是一个普通按钮,它不在&lt;form&gt; 标签内。

<button type="button" id="send" class="btn btn-outline-blue btn-sm">Send</button>      

我点击send按钮时,我需要执行一个单独的PHP文件(send.php

如果buttontype="submit" 并且在&lt;form&gt; 内,我知道该怎么做

但在这种情况下,我想不出该怎么做。请帮忙...

【问题讨论】:

  • 您想向send.php 发送某种数据还是只是一个空的GET 请求?是否要显示新页面?不清楚。
  • 你可以用ajax解决你的问题stackoverflow.com/questions/1280767/…
  • @Walk:是的,我需要发送数据...

标签: javascript php html


【解决方案1】:

我是这样做的:

经过一些研究,我最终编写了这个使用 ajaxjavascript 代码

这是我的HTML

<div class="md-form">
    <i class="fa fa-user prefix grey-text"></i>
    <input type="text" id="subject" name="subject" class="form-control ">
    <label for="form-name">subject</label>
</div>

<div class="md-form">
    <i class="fa fa-envelope prefix grey-text"></i>
    <input type="text" name="to" id="to" class="form-control ">
    <label for="form-email">Your email</label>
</div>

<div class="md-form">
    <i class="fa fa-tag prefix grey-text"></i>
    <input type="text"  name="message" id="message" class="form-control">
    <label for="form-Subject">Message</label>
</div>

这是我的PHP 文件

<?php
    $mailto=$_POST['to'];
    $mailSub=$_POST['subject'];
    $mailMSG=$_POST['message'];
    require 'PHPMailer-master/PHPMailerAutoload.php';
    $mail = new PHPMailer();
    $mail ->IsSmtp();
    $mail ->SMTPDebug=0;
    $mail ->SMTPAuth=true;
    $mail ->SMTPSecure='tls';
    $mail ->Host='smtp.gmail.com';
    $mail ->Port= 587; //465; //or 587
    $mail ->IsHTML(true);
    $mail ->Username="myemail";
    $mail ->Password="password";
    $mail ->SetFrom("email");
    $mail ->Subject=$mailSub;
    $mail ->Body=$mailMSG;
    $mail ->AddAddress($mailto);

    if(!$mail ->Send() || !isset($mailto) || trim($mailto)=='' || !isset($mailSub) || trim($mailSub)=='' || !isset($mailMSG) || trim($mailMSG)=='' ){       
                echo '<script language="javascript">';
        echo 'alert("Mail not Sent!!!!")';
        echo '</script>';
    }else{
        echo '<script language="javascript">';
        echo 'alert("message successfully sent")';
        echo '</script>';           
    }
?>

这是HTML 文件中的我的javascript...

   <script type="text/javascript">
        $(document).ready(function () {
            $("#send").click(function () {

                $.ajax({
                    url: 'SendEmail.php',
                    type: 'POST',
                    dataType: "json",
                    data: {
                        to: $('#to').val(),
                        subject: $('#subject').val(),
                        message: $('#message').val()
                    }
                }).done(function (data) {
                    alert(JSON.stringify(data));                        
                });
            });
        });
    </script>

嗯,希望你能明白这一点。谢谢大家帮忙:)

【讨论】:

    【解决方案2】:

    你可以使用ajax在按钮点击事件上调用php类

    【讨论】:

    • 你给出的例子,it is for a text file. Does it work with php files too?和 w3school 例子中的语法一样吗?
    • 是的,您可以在 HTML 文件中添加脚本,然后调用 ajax 并将 php 文件名作为 url 传递
    • 我听不懂您在说什么,先生。可以举个例子解释一下吗?
    【解决方案3】:

    不要使用按钮。使用常规链接。 Use CSS to make it look however you like.

    或者,将其设为提交按钮并将其放入表单中。该表单不需要任何其他内容。如果您愿意,可以将style 的表单设为display: inline

    或者,add a click event handler 使用 JavaScript 为 location 分配一个新值。

    或者,使用 JavaScript 添加一个单击事件处理程序,该处理程序使用 XMLHttpRequest 对象或 fetch 对象在不离开页面的情况下发出 HTTP 请求。

    【讨论】:

    • 您能简化一下答案吗?
    • @user8696864 — 如果您想要简单的版本,请忽略除第一行之外的所有内容。
    猜你喜欢
    • 2013-04-10
    • 1970-01-01
    • 2015-11-19
    • 2013-10-02
    • 2018-07-03
    • 2011-10-24
    • 1970-01-01
    • 2011-11-23
    • 1970-01-01
    相关资源
    最近更新 更多