【问题标题】:PHP mail function + ajax = frustrated mePHP 邮件功能 + ajax = 让我很沮丧
【发布时间】:2010-08-11 17:21:32
【问题描述】:

我正在使用 ajax 提交联系人,而无需重新加载页面,它在大多数情况下运行良好,除非我尝试发送邮件正文时没有发送任何内容。 to 和 subject 部分工作正常,只是当身体试图发送时,我什么也看不到。我已经测试了它运行严格的 php 函数并且主体工作,只是页面重新加载,我不确定为什么它在这里工作,但不是 ajax。如果有人能提供一些启示,那就太好了,谢谢。

.js

$(document).ready(function () {

    $('#submit').click(function () {

        var contactformdata = {
            you: $('#you').val(),
            subject: $('#subject').val(),
            message: $('#contactbody').val(),
        }


        $.ajax({
            url: "http://www.trenthauck.com/index.php/home/sendemail",
            type: 'POST',
            data: contactformdata,
            success: function () {
                $('#contactheader').replaceWith("<p class='header'>Thanks</p>");
                $('#contactform').remove();
                $('#contactlink').remove();
                $(document).scrollTop(25);
            }
        });

        return false;
    });
});

这是php函数(使用CI,顺便说一句)

function sendemail(){
        $to = "auck@gmail.com";
        $from = $this->input->post('you');
        $subject = $this->input->post('subject');
        $message = $this->input->post('contactbody');

        $tosend = "From: " . $from . "\nMessage: " . $message;

        mail($to, $subject, $message);

        $this->index();

    }

如果有帮助的话还有表格

    <div class="divider" id="contact">
    <p class = "header"><a id="contactheader" name="gocontact">Contact</a></p>
    <div id = "contactform">
        <form method = "post" id="contactform" action="<?php site_url()?>index.php/home/sendemail">
            <div id ="formtitles">
                <p class = "info">You:</p>
                <p class = "info">Me:</p>
                <p class = "info">Subject:</p>
                <p class = "info">Body:</p>
                <input id = "submit" type="submit" value="Send" />
            </div>
            <div id ="formfields">
                <input id="you" type="text" name="you" /><br/>
                <p class = "info">auck@gmail.com</p>
                <input id ="subject" type="text" name="subject" /><br/>
                <textarea id = "contactbody" name="contactbody"></textarea>
            </div>
        </form>
   </div>
</div>

感谢您的帮助

【问题讨论】:

  • 在调用索引和打印消息正文之前停止会发生什么?另外,检查mail() 调用的返回值。如果它是假的,那么就出了问题。 (祝你好运,虽然 搞清楚了,内置的邮件错误检查有点不存在......)

标签: php ajax email codeigniter


【解决方案1】:

在 jquery 中,您使用变量“message”发送消息,但在 php 中,您使用“contactbody”接收消息。

更改 php 来自:

$message = $this->input->post('contactbody');

到:

$message = $this->input->post('message');

【讨论】:

  • 这不是问题。他将文本区域命名为“contactbody”,这样应该可以正常工作。
  • @Ignacio,我认为这是问题所在。 jquery 从字段中收集数据不是问题。这是它通过将其称为“消息”将其发布到 php 中。他可以在 jquery 中将:“message: $('#contactbody').val()”更改为:“contactbody: $('#contactbody').val()”,这样就可以了。不过感谢您的反对:)
  • 不要把它当作个人的。投反对票只是“这个答案没用”:) 无论如何,我又读了一遍,我认为你是对的。对不起,伙计。
  • 是的,他是对的,我对其进行了一些修改,使其看起来像他的第二条评论。谢谢大家。
猜你喜欢
  • 1970-01-01
  • 2016-07-10
  • 1970-01-01
  • 1970-01-01
  • 2014-11-08
  • 2013-06-06
  • 2016-07-07
  • 1970-01-01
  • 2016-09-18
相关资源
最近更新 更多