2017-10-09 5 views
0

この問題を最も詳しく説明する方法がわかりませんでした。サーバー上の必須PHPファイルにEventSourceの "event"パラメータが設定されていません

私はこのようないくつかのカスタムイベントハンドラとのJavascriptのEventSourceオブジェクトがあります、次のように更新ストリームのパラメータ:updates.phpで

var source = new EventSource('updates.php'); 
source.addEventListener('add', addHandler, false); 
source.addEventListener('remove', removeHandler, false); 

を、私は「イベント」を使用して、カスタムイベントを定義することができます適切なハンドラをトリガします。

echo "event: add" . PHP_EOL; 
echo "data: " . $message . PHP_EOL; 

これは

updates.phpがrequire_onceを経由updates2.php含まupdates.phpで正常に動作します。これはまた、updates2.phpで動作し、私のJavascriptで正しいハンドラを呼び出します。

updates2.phpにはrequire_once経由のupdates3.phpが含まれています。これはupdates3.phpでは機能しません。すべてのイベントはデフォルトで「メッセージ」タイプになり、カスタムハンドラは起動しません。

+0

コンテンツタイプがtext/event-stream、header( 'Content-Type:text/event-stream')に設定されましたか。 ? –

+1

Questionにすべての 'php'ファイルを含めることができますか?サーバや 'EventSource''エラーハンドラにエラーが記録されていませんか? – guest271314

+0

@GaneshKコンテンツタイプを設定しましたが、どこでも正しく動作しますが、PHPファイルが含まれています。 onerrorハンドラにエラーはありません。カスタム入力イベントではなく、デフォルトメッセージとしてonmessageに記録します – Monbrey

答えて

0

私はいくつかの他の場所で定義された回避策を使用して終了しました。

イベント:パラメータをカスタム定義する代わりに、代わりにdata:パラメータとしてJSONオブジェクトを使用し、その中に好きなカスタムフィールドを追加できます。

関連する問題