簡體   English   中英

GetJSON jquery 返回未定義

[英]GetJSON jquery returns undefined

我正在嘗試讓我的搜索框工作並在文本搜索和標題上執行 getJSON。 但在控制台日志中,我得到 text=undefined?title=undefined。 所以它不顯示任何 JSON。 不確定我的點擊是否正常工作,或者我是否必須制作我的 JSON 對象?

腳本

 <script>
     var searchstring = $('input[type="text"]', this).val();
     var url = "https://data.edu/api/v1/metadata";

     url += "?text=" + searchstring;
     url += "?title=" + searchstring;


    $(document).ready(function() {
        $('button[type="button"]').click(function(event){

           $.ajax({
            type: "GET",
            url: url,

            success: function(res){
                console.log(res);
                  var items = res.data.metadata;
                  var ins = "";
                  for (var i = 0; i < items.length; i++){
                    ins += "<div>";
                    ins += "Title" + items[i].title;
                    ins += "Title" + items[i].title;
                    ins += "Title" + items[i].title;
                    ins += "</div><br />";
                  };
                  $('#results').html(ins);
                }

            });         
        });
     });

  </script>

html

              <form class="destinations-form"  role="search" >
                 <div class="input-line">
                    <input id="searchForm"  type="text"  class="form-input check-value" placeholder="Search Documents" />

                    <button type="button"  class="form-submit btn btn-special"  "</button>

                 </div>
              </form>
               <div class="container">
                  <div class="hero-text align-center">
                     <div id="results"></div>
                  </div>
              </div>

json

data: [
    {
        collection_id: "ADGM-1552427432270-483",
        metadata:{
                   year: "2019",
                   files: text ,
                   title: text,
                },

問題是因為您只在頁面首次加載時讀取字段中的值並且它是空的。 要解決此問題,請在click處理程序中移動該邏輯。

下一個問題是您應該從$('input[type="text"]', this)刪除this 您在這里不需要上下文選擇器,無論如何,這個選擇器是不正確的。

另請注意,有效的查詢字符串以? 並用&分隔每個值,因此您的url連接需要稍作修改。 此外,您不應在每次點擊時更新url值。 如果您這樣做,您的 AJAX 請求將只工作一次。

最后,您的響應中的metadata是一個對象,而不是一個數組。 data是數組,因此您需要對其進行循環。 也可以使用map()來簡化循環。 嘗試這個:

$(document).ready(function() {
  const url = "https://data.edu/api/v1/metadata";

  $('button[type="button"]').on('click', function(e) {
    let searchstring = $('input[type="text"]').val();
    let requestUrl = url + `?text=${searchstring}&title=${searchstring}`;

    $.ajax({
      type: 'GET',
      url: requestUrl,
      success: function(res) {
        let html = res.data.map(item => `<div>Title ${item.metadata.title}</div><br />`);
        $('#results').html(html);
      }
    });
  });
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM