jquery:调用隐形php-mailer? AJAX?

时间:2011-02-17 09:14:42

标签: php javascript ajax jquery

嘿伙计们, 我知道如何创建一个简单的php文件,将一些信息邮寄给我。

然而我不知道的是如何用jquery调用那个php文件并移交一个变量。 移交变量可能适用于 isset()...

如何从jquery调用此PHP邮件程序并从用户那里执行该HIDDEN。因此,不应该弹出一个新窗口,不应该是页面刷新或类似的东西。

$('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链接应该触发电子邮件脚本。在我的电子邮件脚本中,我需要访问jquery中设置的“id”变量。如果php脚本执行了这个操作,那么拥有一个回调函数会更好,所以我可以输出“谢谢你报告”。

怎么做?

谢谢你们。

4 个答案:

答案 0 :(得分:1)

我会使用$.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>

答案 1 :(得分:0)

请参阅$ .post以了解如何调用并将id传递给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'];

答案 2 :(得分:0)

尝试:

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

$value = $_REQUEST['variableName']; $value2 = $_REQUEST['variable2Name'];

答案 3 :(得分:0)

jQuery在AJAX API catagory下为我们提供了一些很棒的AJAX方法。我认为$.post将是您正在寻找的。这就是我在Grooveshark用户脚本中将JSON数据发送到一个简单的PHP脚本的方式:

$.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好多了。