Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jquery:调用不可见的php邮件程序?AJAX_Php_Javascript_Ajax_Jquery - Fatal编程技术网

jquery:调用不可见的php邮件程序?AJAX

jquery:调用不可见的php邮件程序?AJAX,php,javascript,ajax,jquery,Php,Javascript,Ajax,Jquery,嘿,伙计们, 我知道如何创建一个简单的php文件,将一些信息发送给我 然而,我不知道的是如何使用jquery调用该php文件并传递一个变量。 传递变量可能与isset()… 我如何从jquery调用这个PHP邮件程序并对用户隐藏它。因此,不应该弹出一个新窗口,也不应该出现页面刷新或类似的情况 $('a.report').click(function(e) { e.preventDefault(); var id = $(this).attr('href');

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

然而,我不知道的是如何使用jquery调用该php文件并传递一个变量。 传递变量可能与
isset()…

我如何从jquery调用这个PHP邮件程序并对用户隐藏它。因此,不应该弹出一个新窗口,也不应该出现页面刷新或类似的情况

$('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脚本能够做到这一点,那么拥有一个回调函数就更好了,这样我就可以输出“感谢您的报告”

怎么做


谢谢大家。

请参阅$.post,了解如何调用并将id传递给php脚本()

这将是一种悲哀

$.ajax({
  context: $(this),
  type: 'POST',
  url: 'script.php',
  data: {id: id },
  success: function() {
     $(this).parent().text('Thank you for reporting.');
  }
});
在php脚本中,
$id=$\u POST['id']

尝试:

 $.post('script.php', {variableName: value, variable2Name: value2});
在php中:
$value=$\u请求['variableName']$value2=$_请求['variable2Name']

我会使用
$.post()


更新:以下是如何将回调“绑定”到特定元素的方法:

<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>

$(函数(){
$('a.report')。单击(函数(){
var htmlElement=$(this.parent();
风险值数据={
// ...
};
美元邮政(
document.location.toString(),
数据,
功能(数据){
html(data.message);
},
“json”
);
返回false;
});
});

jQuery为我们提供了一些很棒的AJAX方法。我想这就是你要找的。以下是我如何将JSON数据发送到Grooveshark userscript中的简单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好得多。

我不想将消息放入.result div,而是替换触发mailer.php的链接。单击时,我将链接文本替换为。。。(3点),当mailer.php的响应返回时,我想用“感谢您的报告”消息替换它的整个父级。另一种方法是将一些ID传递给
mailer.php
,然后返回。ID将指向DB中的特定行和HTML中的特定元素。然后您可以在
onReportPosted(data)
中执行类似于
$('#item_'+data.id).text(data.message)
的操作。
$.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) );
}
});
 $incoming = json_decode(file_get_contents("php://input"), true);