PHP mail function + ajax = разочаровал меня - PullRequest
0 голосов
/ 11 августа 2010

Я использую 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>

Спасибо за помощь

1 Ответ

4 голосов
/ 11 августа 2010

в jquery вы отправляете сообщение, используя переменную 'message', но в php вы берете его, используя 'contactbody'.

изменить php с:

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

до:

$message = $this->input->post('message');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...