2016-08-20 4 views
0

フォーム入力を持つ単純なページを作成しました。ユーザーがフォームにテキストを印刷している間に、スクリプトはサーバー上でリクエストを取得し、JSONデータを取得します。入力から値を再処理する関数に値を渡す必要があります。ファンクションへのデリバリー値の入力

var search = document.querySelector('#search'); 
 

 
function iReceived(msg) { 
 
    var mass = msg.data; 
 
    mass.map(function(e) { 
 
    var city = document.querySelector('#city'); 
 
    var newLi = document.createElement('li'); 
 
    newLi.innerHTML = e.Description; 
 
    city.appendChild(newLi); 
 
    }); 
 
}; 
 

 
function Foo(e) { 
 
    $.ajax({ 
 
    type: "POST", 
 
    dataType: 'jsonp', 
 
    url: "https://api.novaposhta.ua/v2.0/json/", 
 
    data: { 
 
     "modelName": "Address", 
 
     "calledMethod": "getCities", 
 
     "methodProperties": {}, 
 
     "apiKey": "6f94a6391cb5134ee68ddb7924de2a3d" 
 
    }, 
 
    success: iReceived, /* this function I would like to pass value input 
 
          but I can write just a reference on this 
 
          function without() and arguments */ 
 
    }); 
 
    console.log(e.target.value); 
 
}; 
 

 
search.oninput = Foo;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script> 
 

 
<form> 
 
    <input type="text" id="search" onchange="Foo()"> 
 
</form> 
 
<div id="content"></div> 
 
<div id="city"></div>

私はこのプログラムに悪い方法を構築していてもいいですか?あなたはそれが機能を実行する前に、ボタンで自分のデータを送信し、ユーザーを持つことから始めなければならない

+0

以下のようなsuccess方法、それは動作します修正するのでしょうか?か否か?あなたの質問は何ですか ? – baao

+0

'$ .ajax'で使われている'#search'の値が表示されないので、これはうまくいきません。また、パフォーマンスのために書き換えが必要な行が数多くあります。 –

+0

これはcodereview.stackexchange – Ven

答えて

0

jQuery docsを読んだことがありますか?

成功タイプ:リクエストが成功した場合に呼び出される関数(何のデータ、文字列textStatus、jqXHR jqXHR )
機能。この関数は、 に3つの引数を渡します。サーバから返されたデータで、dataTypeパラメータに従って 、または指定されている場合はdataFilterコールバック の形式でフォーマットされます。ステータスを表す文字列。 jqXHR (jQuery 1.4.x、XMLHttpRequest)オブジェクトです。 jQuery 1.5以降では、 成功設定は一連の関数を受け入れることができます。各機能は、 が順番に呼び出されます。これはAjaxイベントです。タイムアウト

は、だからあなたの場合には、あなたのFoo()機能が

function Foo(e) { 
    $.ajax({ 
    type: "POST", 
    dataType: 'jsonp', 
    url: "https://api.novaposhta.ua/v2.0/json/", 
    data: { 
     "modelName": "Address", 
     "calledMethod": "getCities", 
     "methodProperties": {}, 
     "apiKey": "6f94a6391cb5134ee68ddb7924de2a3d" 
    }, 
    success: function(data) { 
     // the data is the data returned from the server 
     // do whatever you want with the data here 
     // get the value you need for iReceived here. 
     iReceived(value); /* this function I would like to pass value input 
          but I can write just a reference on this 
          function without() and arguments */ 
    } 
    }); 
    console.log(e.target.value); 
}; 
0

私はここにはまだコメントできませんが、良い出発点です。そのボックスにテキストを入力するとすぐに、jsonリクエストは1文字で、次に2文字で実行されます。

現在、あなたはこれまでにすべてのオブジェクトである2070の結果を返しますが、私はAPIの書式設定についてはわかりませんが、必要なオブジェクト/配列の一部だけを呼び出すようにしてください。

+0

フォームにユーザーを表示するデータを取得し、このデータを使用して名前都市のドロップダウンリストを作成します。 – Ogurchik

+0

私はあなたを理解しているか分からない。あなたはそれを別に説明しようとすることができますか? –

+0

@ D.ユーザは、自分が選択したい名前の都市を印刷することができます。私はユーザーが入力した名前市の使用テキストのソートリストが必要で、ソートされた名前都市のリストだけを構築します。さらにユーザが名前都市をクリックするとそれが選択されます。 OMG、私の英語には申し訳ありません。 – Ogurchik

関連する問題