2017-05-18 10 views
0

私の最初のnodejsプロジェクトをしようとしています。ローカルサーバーにajax投稿を使用する方法?

localhost:3000/homeで動作するNodejsを使用してWebベースのサーバーを構築しました。

次に私はcordroidを使ってアンドロイドアプリを作り、エミュレータで動かします。私はサーバーにクエリを送信しようとし、検索結果を再びアプリケーションに表示しようとします。しかし、私はajaxの使用に問題を抱え、私はURLの多くの表現を試した、それはすべて出てきた:ファイルが見つかりません。

プロジェクト階層(ExpressとEJSを用いて)homecontroller.jsで enter image description here

ポスト機能アプリで

app.post('/home', urlencodedParser, function(req, res) { 
     var rsults = []; 
     var pname = req.body.player_name; 
     var tname = req.body.team_name; 
     results[] = searchdatabase(pname,tname); 
     res.render('home', {results: results}); 

<form> 
<input type="text" class="form-control" id="player_name"name="player_name"> 

<input type="text" class="form-control" id="team_name" name="team_name"> 

<button type="submit" class="btn btn-info" onclick="search">Search</button> 

<script> 
    function search(){ 
    var pname = $("[name='player_name']").val(); 
    var tname = $("[name='team_name']").val(); 

    jQuery.ajax({ 
    type: "POST", 
    url: "http://localhost:3000/home", 
    data: '{"pname": "pname", "tname": "tname"}', 
    dataType: "json", 
    cache: false, 
    sucess: function(response) 
    {alert("sent");} 
    }) 
    } 
</script> 
</form> 

のindex.htmlこのコードされ貧しい多分、私がseverで書いたものは、アプリケーションからのajax requstに対応することはできません。あるいは、私はajax関数で間違っています。目的を達成するために私に適切なプレゼンテーションを提案してください。

ps。ウェブサーバーは正常に動作します。

+0

あなたのサーバーはモバイルデバイスでもホストされていますか? – Glubus

+0

いいえ、私はデバイスのWebブラウザでlocalhostではなく10.0.2.2を使用しています。それについてもっと多くの情報を提供したいだけです。アプリは、実際にはデータをサーバから取得するだけで済みます。 – runchu

答えて

0

Localhostはデバイス自体によって認識されます。つまり、コンピュータにサーバーをホストし、コンピュータ上でそのサーバーと通信する場合、localhostを使用できます。

しかし、別の端末でウェブサイトを実行している場合、携帯端末のローカルホストはその端末によって解釈されているとしましょう。つまり、明らかにあなたのコンピュータと通信しません。

ここで、2つのデバイスがお互いを見つけ出すためには、互いの名前、つまりIPアドレスを知る必要があります。両方のデバイスが同じネットワーク(ローカルWi-Fiなど)にある場合、それらのデバイス間で通信するためのローカルIPを使用できます。

Windowsの場合はコマンドプロンプトを開き、ipconfigと入力するか、Linuxの場合はip addrと入力して、コンピュータのローカルIPを取得します。投稿したIPアドレス(ipv4)を投稿アドレスに使用します(基本的にlocalhostを見つけたIPに置き換えます)。その後、もう一度試してください。

+0

私はURLを試しました: "http:// myIP:3000/home";それでも同じエラーが出ます: "アプリケーションエラー、net :: ERR_FILE_NOT_FOUND(file:/// home)。サーバとエミュレータの両方が同じコンピュータ上で動作します。ブラウザを開いて10.0.2.2:3000/ – runchu

+0

あなたのコンピュータのIPが52.120.71.160であるとしましょう(これはもちろんではありません、あなたのipconfigをチェックしてください)。次に接続する必要があります: http://52.120.71.160:3000/home '10.0.2.2アドレスは、エミュレータのホストマシン上のlocalhostに接続する巧妙な方法ですが、実際のモバイルデバイスにアプリケーションをデプロイする場合、これはうまくいかないでしょう。 – Glubus

関連する問題