2016-09-06 67 views
0

我對Java腳本沒有太多經驗,並且在使用java腳本回調時遇到困難。我想知道這裏的任何專家是否會幫我擺脫我對這段代碼的困擾。 這個想法是,我試圖從.json文件中回調,並通過id進行搜索。 我能夠看到所有客戶,但無法搜索到任何客戶。使用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

從我可以從你的代碼中的URI「json.json」告訴返回JSON對象的數組。 在第一個getJSON調用中,done函數參數'data'包含這些json對象。 然後循環遍歷每個這些對象,並將它們逐個傳遞給formatItem。 這看起來正確。

在find方法中,您使用的是相同的uri'json.json',但在這裏您不會遍歷這些對象,而是將它們全部發送到單個對象所需的formatItem函數。

因此,要獲得從您可以將對象

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

並實現它在你的查找功能

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

感謝陣列上使用過濾器陣列具有ID在$('#KUNDE').val()對象你非常。這解決了我的問題:)你解釋得很好。 –

+0

太棒了!謝謝 –