2016-05-04 4 views
1

私はnode.jsとexpress.jsで作業しています。この問題を最速で解決できる方法を探しています。XMLHttpRequest()を使用して、Webサイトの別のページにデータを常時送信するにはどうすればよいですか?

私のウェブサイトの1ページは、緯度がvar lat、経度がvar longの位置情報を受信して​​おり、その情報を私のウェブサイトの別のページに常時送信したいと考えています。私のコードは非常に不完全ですが、どんな指針も非常に役に立ちます。私は現在、ブラウザのコンソールにhttp://localhost/driver/save_position Failed to load resource: net::ERR_CONNECTION_REFUSED以降のエラーPOST http://localhost/driver/save_position net::ERR_CONNECTION_REFUSEDを取得しています。私のコードは以下の通りです。

これは、あるWebページ上で実行されるjavascriptファイル内のコードで、情報を他のページに送信して、常に更新できるようにしたいものです。私のルーティングのための別々のファイルに

function sendCoordinates(lat, lon){ 
    var xhttp = new XMLHttpRequest(); 
    xhttp.open("POST", "http://" + window.location.hostname + "/driver/save_position", true); 
    xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
    xhttp.send('lat=' + lat + '&lon=' + lon); 
} 

私は

router.post('/driver/save_position',function(req, res, next){ 
    console.log(req) 
}) 

を持っている私は非常にそのアイデアのこれらの種類のすべてのいずれかのアドバイス初心者よ、助け、そして解決策が非常に高く評価されています!何か助けてくれてありがとう!

+0

あなたのエクスプレスコンソールにXHRリクエストがURLに当たるのを表示していますか? – char

+3

"私は常にその情報を自分のウェブサイト上の別のページに送信したいと思っています。"あなたがここで何を意味するのかを明確にしていただけますか? –

+0

@BlazeSahlzen私は、ドライバによって緯度と経度が入力される1ページを持っています。そして、私はその情報を私のウェブサイトの別のページに送信しようとしています。そのドライバはどこにありますか? – namore

答えて

2

1つのWebページは、同じブラウザにない限り、別のWebページに直接データを送信しません。 「あなたのウェブサイトの別のページ」と言っているので、他のユーザーのために他のページにデータを表示させることを話していると思います。それがあなたが意味するものなら、それはブラウザJavascriptが持つ機能ではありません。また、実際には目的地ではないため、あなたが「ウェブページに送る」と言ったときの意味ははっきりしません。

あなたができることは、サーバーにリクエストを送信し、そのサーバーに接続されている他のユーザー/ページに通知することです。他のユーザー/ページにライブWebSocketが接続されている場合、サーバーはwebSocketを介してそのユーザー/ページにメッセージを送信できます。

他のユーザー/ページに同じサーバーへのライブWebSocket接続がない場合、サーバーからこの情報を取得できる唯一の方法は、独自のAjax呼び出しでその情報をサーバーに要求することです。サーバーはその情報を保管しなければならないので、誰かがそれを求めたら情報を提供することができます。あなたが同じブラウザで別のウィンドウにブラウザで一つのウィンドウからデータを送信する方法を求めている場合は


、あなたは同じブラウザで2つのcoooperatingウィンドウ間でデータを送信するためにpostMessage()を使用することができます。

+2

_ "1つのWebページは別のWebページに直接データを送信しません。これはブラウザJavascriptが持つ機能ではありません" _ 'SharedWorker()'はタブ間で通信し、コンテキストを参照できます。おそらく 'postMessage()'、 'MessageChannel()'、OPが "別のページ"をどのように定義しているかにもよる。 – guest271314

+1

@ guest271314 - 私は両方のケースに対処するために私の答えを更新しました - データを別のユーザーに送信するか、同じブラウザの別のウィンドウにデータを送信します。 – jfriend00

+0

@ jfriend00 - はい、貧弱な言葉遣いには申し訳ありません - ここでは明確化しています - 私は「ドライバ」の座標を取ろうとしています(ドライバが1つのウェブページに行きボタンを「トラックしてください」)別のユーザーのために別のページに「ドライバ」の場所が表示されます。では、この情報を保持するためにサーバーにリクエストを送信する方法と、「ドライバー」の最新座標を取得するためにAjax呼び出しをループする他のユーザーのページ内に関数を持たせることはできますか? – namore

関連する問題