1

誰かが私のウェブページからハングアウトを開始したときに通知する簡単なハングアウト アプリケーションを作成しました。

新しいユーザーがハングアウトを開始したことを通知するサーバー側スクリプトを呼び出した段階にあり、ユーザーに更新されたプロンプトを表示するためにメッセージをハングアウトに戻す必要があります。ラインに沿った何か - サポート エンジニアがこのハングアウトについて警告を受けており、まもなく対応します。

ハングアウト 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

jQuery と PHP で json を使用する場合は、次の 1 つのことを行う必要があります。

まず、PHP で json 応答を送信する必要があります。

通知.php

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

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

次に、 dataTypeオプションを使用して、クライアントで json データを受け取ることを宣言します。

あなたのクライアント側:

$.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 に答える