2016-09-06 5 views
0

私はjava-scriptに関する経験が豊富で、Javaスクリプトのコールバックに問題があります。私は、ここの専門家がこのコードで私の苦労から私を助けるかどうか疑問に思います。 私は.jsonファイルからコールバックを行い、idで検索しようとしていると思います。 私はすべての顧客を見ることができますが、それらのどれも検索することはできません。私はあなたのコードのuri「json.json」から伝えることができるものから、JavascriptとjQueryでWeb APIを呼び出す

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <title>Kunde</title> 
</head> 
<body> 

    <div> 
     <h2>Kunde</h2> 
     <ul id="ALLEKUNDE" /> 
    </div> 
    <div> 
     <h2>Search by ID</h2> 
     <input type="text" id="KUNDE" size="5" /> 
     <input type="button" value="Search" onclick="find();" /> 
     <p id="RESULTS" /> 
    </div> 

    <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.0.3.min.js"></script> 
    <script> 
     var uri = 'json.json'; 

    $(document).ready(function() { 
     // Send an AJAX request 
     $.getJSON(url) 
      .done(function (data) { 
      // On success, 'data' contains a list of products. 
      $.each(data, function (key, item) { 
       // Add a list item for the product. 
       $('<li>', { text: formatItem(item) }).appendTo($('#ALLEKUNDE')); 
      }); 
      }); 
    }); 

    function formatItem(item) { 
     //return item.name + item.phone; 
     return item.ID + item.name + item.phone + item.contact + item.balanceLCY + item.creditLimitLCY; 
     //'ID= ' + item.ID, + 'name = ' + item.name, "<br />" + 'phone = ' + item.phone, "<br />" + 'contact = ' + item.contact, "<br />" + 'balanceLCY= ' + item.balanceLCY, "<br />" + 'creditLimitLCY = ' + item.creditLimitLCY 
    } 

    function find() { 
     var id = $('#KUNDE').val(); 
     $.getJSON(uri) 
      .done(function (data) { 
      $('#RESULTS').text(formatItem(data)); 
      }) 
      .fail(function (jqXHR, textStatus, err) { 
      $('#RESULTS').text('Error: ' + err); 
      }); 
    } 
    </script> 
</body> 
</html> 

答えて

3

はJSONオブジェクトの配列を返します。ここでは

は私のコードです。 最初のgetJSON呼び出しでは、done関数のパラメータ 'data'にこれらのjsonオブジェクトが含まれています。 これらのオブジェクトのそれぞれをループし、formatItemに1つずつ渡します。 これは正しいようです。

findメソッドでは、同じuri 'json.json'を使用していますが、ここではオブジェクトをループしません。代わりに、それらをすべて単一のオブジェクトを必要とするformatItem関数に送信します。

だから、あなたがオブジェクト

var item = array.filter(function (obj) { 
    return obj.ID === id; 
})[0]; 

そして、あなたのfind関数

function find() { 
    var id = $('#KUNDE').val(); 
    $.getJSON(uri) 
     .done(function (data) { 

     var item = data.filter(function (obj) { 
       return obj.ID === id; 
      })[0]; 

     if(typeof item !== 'undefined' || item !== null){ 
      $('#RESULTS').text(formatItem(item)); 
     } 
     }) 
     .fail(function (jqXHR, textStatus, err) { 
     $('#RESULTS').text('Error: ' + err); 
     }); 
} 
+0

感謝でそれを実装するための配列にフィルタを使用することができ、アレイから$('#KUNDE').val()にIDを持つオブジェクトを取得するにはあなたは大変です。これは私の質問を解決:)そしてあなたはそれをとてもうまく説明しました。 –

+0

素晴らしい!ありがとうございました –

関連する問題