1

我已经构建了一个简单的环聊应用程序,当有人在我的网页上发起环聊时通知我——Google plus 之外。

我正处于调用服务器端脚本的阶段,该脚本通知我新用户已发起环聊,我需要将消息传递回环聊以向用户显示更新的提示。类似于以下内容 - 支持工程师已收到此环聊的提醒,并将很快与您联系。

我已经阅读了环聊数据,包括谁从环聊 api 加入,并将其传递给我的服务器端代码没有问题。但我不确定如何通过 ajax 请求将信息传递回我的环聊应用程序。

这是我使用 jQuery 的 ajax 请求。

var hangoutUrl = gapi.hangout.getHangoutUrl();
var personsInHangout = gapi.hangout.getParticipants();

var callbackUrl = 'http://styxofdynamite.bitnamiapp.com/notify.php?';

$.ajax({
    url: callbackUrl,
    dataType: 'text',
    data: {
        "personsInHangout" : personsInHangout,
        "hangoutUrl" : hangoutUrl,
        "topic" : params['gd'],
    }
}).done( function(data, status, xhr){
    //call was made process result
    $('.msg').html(data.msg);
}).fail( function(xhr, status, error){
    $('.msg').html("There was a problem contacting the server. (" + status + ")");
});

目前我没有返回任何东西,所以我很高兴达到.fail()理想状态,我需要从 notify.php 返回一些东西到这个环聊应用程序。

服务器端片段:

$personsInHangout = $_GET['personsInHangout'];
$hangoutUrl = $_GET['hangoutUrl'];
$topic = $_GET['topic'];

$emailMessage = 'Hey Support Team, ';

for($i = 0, $size = count($personsInHangout); $i < $size; ++$i) {
    $emailMessage .= $personsInHangout[$i]['person']['displayName'];
    $emailMessage .= ' is currently waiting in the support ';
    $emailMessage .= '<a href="'.$hangoutUrl.'">hangout</a>';
    $emailMessage .= ' to discuss ' . $topic;
}

print $emailMessage;

$to      = 'support@team.com';
$subject = 'New Hangout Request';
$headers = 'From: hangout.monitor@team.com' . "\r\n" .
'Reply-To: hangout.monitor@team.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $emailMessage, $headers);

//return something to say that a support engineer has been notified.
4

3 回答 3

3

使用 php 的内置json_encode 文档发送回 JSON 格式的响应。除了数据之外,您还需要发送一些标头。

<?php
// This tells the browser the following data should be interpreted as JSON, as opposed to text or html
header('Content-Type: application/json');
// Take any $data and format it correctly as JSON.  Works with arrays, strings, numbers
echo json_encode($data);

?>
于 2013-11-13T00:09:11.097 回答
0

我也有这个问题。您的“回拨”网址是“http”。这已被 google 的规则阻止。您必须使用“https”。

var callbackUrl = 'http://styxofdynamite.bitnamiapp.com/notify.php?';

var callbackUrl = 'https://styxofdynamite.bitnamiapp.com/notify.php?';
于 2013-12-31T18:08:59.963 回答
0

如果你想将 json 与 jQuery 和 PHP 一起使用,你需要做 1 件事:

首先,您需要在 PHP 中发送一个 json 响应:

通知.php

<?php
// your code, send mail, etc.

header('Content-Type: application/json');
die(json_encode(array(
   'foo' => 'bar',
)));

然后你有一个声明,你在客户端接收 json 数据,带有dataType选项。

您的客户端:

$.ajax({
    url: callbackUrl,
    dataType: 'json',
    data: {
        "personsInHangout" : personsInHangout,
        "hangoutUrl" : hangoutUrl,
        "topic" : params['gd'],
    },
    success: function(data){
       console.log(data.foo); // Will display "bar" in debug console
    }
})
于 2013-11-13T00:13:56.470 回答