【问题标题】:Why cant ajax find php file when submitting form?为什么ajax在提交表单时找不到php文件?
【发布时间】:2017-10-29 22:15:20
【问题描述】:

我有一个表单,发出一个 ajax 发布请求,但它找不到 php 文件。我尝试了任何方法并在这里阅读了这么多帖子,并尝试了所有建议但没有任何帮助。

  1. 我尝试使用某处建议的绝对路径。不起作用。
  2. 相对路径也不起作用
  3. 我试图将提交按钮放在我的 html 文件中的表单之外(在另一篇文章中建议) - 也不起作用。 有谁知道为什么? 编辑:我得到一个 404

文件结构:

myApp/app/js/contact.js
myApp/app/mail/contact.php
myApp/app/index.html

html:

    <section id="contact">
        <form>
            name:
            <input id="name" type="text" name="name"> email:
            <input id="email" type="text" name="email"> message:
            <input id="message" type="text" name="message">
            <button id="submit">send</button>
        </form>
    </section> 

app/js/contact.js:

  $('#submit').click(function (event) {
        event.preventDefault() ;
        var name = $("#name").val();
        var email = $("input#email").val();
        var message = $("textarea#message").val();

        console.log("name", name, email);
        $.ajax({
            url: "/app/mail/contact.php",
            type: "POST",
            data: {
                name: name,
                email: email,
                message: message
            }
        })
    });

邮件/contact.php:

<?php
 if (isset($_POST["submit"])) {
    $name = $_POST['name'];
    $email = $_POST['email'];
    $message = $_POST['message'];
    $from = 'Contact Form';
    $to = 'myemail@yahoo.com';
    $subject = 'Message from my page ';
    if (mail ($to, $subject, $body, $from)) {
    $result='<div class="alert alert-success">Thank You! I will be in touch</div>';
    }
}

?>

【问题讨论】:

  • HTML 文档的 URL 是什么?发出 Ajax 请求时,请求的 URL 是什么(使用开发人员工具中的“网络”选项卡)?
  • 您遇到的错误是什么?是什么让你觉得它“找不到 php 文件”
  • 你查看了服务器日志吗?
  • 网址:localhost:3000(就是这样)。对不起,我忘了说-我得到了 404。而且我没有任何服务器日志-我没有使用任何服务器端代码/php 来完成这个表单。

标签: javascript php forms


【解决方案1】:

这不会解决您的问题,但这是一个更好的用户体验

给您的&lt;form&gt; 一个类或 ID 并在表单提交上执行您的表单提交

原来如此

$('.formClassName').submit(function(event){

});

这将允许表单提交在点击提交按钮时触发 AJAX 事件,以及在用户点击回车按钮时触发。

【讨论】:

  • 我已经这样做了,我给我的表单提供了 id 'submit' 但这也没有帮助
【解决方案2】:

在您的 html 文件中,将您的脚本放在 &lt;/body&gt; 标记之前

<section id="contact">
    <form>
        name:
        <input id="name" type="text" name="name"> email:
        <input id="email" type="text" name="email"> message:
        <input id="message" type="text" name="message">
        <button id="submit">send</button>
    </form>
</section>
<script type="text/javascript" src="//code.jquery.com/jquery-3.2.1.min.js"></script>
<script type="text/javascript" src="/app/js/contact.js"></script>
</body>

【讨论】:

  • 我这样做。问题不是我的js文件没有找到,而是我的php文件
【解决方案3】:

而不是使用

url: "/app/mail/contact.php",

使用:

url: "mail/contact.php",

【讨论】:

  • 您的文件结构是否正确?你能仔细检查一下吗,因为我根据你给定的文件结构测试了代码,它没有任何问题。另外,您的网络浏览器控制台或网络中是否有任何错误?
  • 是的,我的文件结构与我发布的一样。我收到 404 错误。也许我应该提到我也在使用 gulp。在这种情况下,我认为这与加载文件没有任何关系,但也许确实如此
猜你喜欢
  • 1970-01-01
  • 2014-02-14
  • 1970-01-01
  • 2017-08-11
  • 2016-03-25
  • 1970-01-01
  • 1970-01-01
  • 2013-08-15
  • 1970-01-01
相关资源
最近更新 更多