jquery: вызывать невидимый php-почтовик? Ajax? - PullRequest
0 голосов
/ 17 февраля 2011

Эй, ребята, я знаю, как создать простой php-файл, который отправляет мне некоторую информацию.

Однако я не знаю, как вызвать этот php-файл с помощью jquery и передать переменную. Передача переменной может работать с isset()...

Как я могу вызвать этот почтовый PHP из jquery и сделать это СКРЫТЫМ от пользователя. Поэтому не должно появляться новое окно и не должно быть обновления страницы или чего-либо подобного.

$('a.report').click(function(e) {
        e.preventDefault();
        var id = $(this).attr('href');

        //call mail script and pass along the "id" variable

        //change text (maybe in a callback function IF THE MAILING WAS A SUCCESS.
        $(this).parent().text('Thank you for reporting.');

    })

Итак, у меня есть ссылка a.report, которая должна запускать скрипт электронной почты. В моем почтовом скрипте мне нужно получить доступ к переменной "id", установленной в jquery. И было бы даже неплохо иметь функцию обратного вызова, если скрипт php сделал это, чтобы я мог вывести «Спасибо за сообщение».

Как это сделать?

Спасибо, ребята.

Ответы [ 4 ]

1 голос
/ 17 февраля 2011

Я бы использовал $.post():

<script type='text/javascript'>
$(function(){
    function onReportPosted(data) {
        // data.status - either 'error' or 'success', from mailer.php
        // data.message - some text, from mailer.php
        $('.result').text(data.message);
    }
    $('a.report').click(function(e) {
        $('.result').text('sending report...');
        var data = {
            text: $('textarea[name=text]').val()
        };
        $.post(
            'mailer.php',
            data,
            onReportPosted,
            'json'
        );
        return false;
    });
});
</script>

И в mailer.php:

<?php
    if ( isset($_POST['text']) ) {
        // mail()...
        $result = array(
            'status' => 'success',
            'message' => 'thank you for reporting',
        );
    } else {
        $result = array(
            'status' => 'error',
            'message' => 'some error occurred',
        );
    }
    header('Content-Type: application/json');
    echo json_encode($result);
    exit;

Обновление: вот способ "привязать" обратный вызов кконкретный элемент:

<script type='text/javascript'>
    $(function(){
        $('a.report').click(function(){
            var htmlElement = $(this).parent();
            var data = {
                // ...
            };
            $.post(
                document.location.toString(),
                data,
                function(data) {
                    htmlElement.html(data.message);
                },
                'json'
            );
            return false;
        });
    });
</script>
0 голосов
/ 17 февраля 2011

jQuery предоставляет несколько отличных методов AJAX для нас в категории AJAX API .Я думаю $. Post будет то, что вы ищете.Вот как я отправляю данные JSON в простой скрипт PHP в моем скрипте пользователя Grooveshark:

$.ajax({
type: 'POST',
url: 'http://path/to/script.php',
data: JSON.stringify({key: 'value', array: ['one', 'two', 'three']),
dataType: 'json',
success: function(data){
    console.log('Mailer returned with object ', JSON.parse(data) );
}
});

И вот как я анализирую их в PHP:

 $incoming = json_decode(file_get_contents("php://input"), true);

Это возвращает вложенные ассоциативные массивы дляконтент JSON, очень легко разобрать!Я настоятельно рекомендую использовать JSON в качестве формата обмена данными.Гораздо лучше, чем XML.

0 голосов
/ 17 февраля 2011

попробуй:

 $.post('script.php', {variableName: value, variable2Name: value2});

в php: $value = $_REQUEST['variableName']; $value2 = $_REQUEST['variable2Name'];

0 голосов
/ 17 февраля 2011

см. $ .Post, чтобы узнать, как позвонить и передать идентификатор в скрипт php (http://api.jquery.com/jQuery.post/)

Это будет что-то вроде

$.ajax({
  context: $(this),
  type: 'POST',
  url: 'script.php',
  data: {id: id },
  success: function() {
     $(this).parent().text('Thank you for reporting.');
  }
});

А в скрипте php$id = $_POST['id'];

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...