Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript GetJSON jquery返回未定义的_Javascript_Jquery_Html_Getjson_Buttonclick - Fatal编程技术网

Javascript GetJSON jquery返回未定义的

Javascript GetJSON jquery返回未定义的,javascript,jquery,html,getjson,buttonclick,Javascript,Jquery,Html,Getjson,Buttonclick,我试图让我的搜索框工作,并对文本搜索和标题执行getJSON。但是在控制台日志中,我得到text=undefined?title=undefined。所以它没有显示任何JSON。不确定我的单击是否正常工作,或者是否必须创建JSON对象 剧本 <script> var searchstring = $('input[type="text"]', this).val(); var url = "https://data.edu/api/v1/metadata";

我试图让我的搜索框工作,并对文本搜索和标题执行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>

问题在于,您仅在页面首次加载且为空时读取字段中的值。要解决此问题,请将该逻辑移动到click处理程序中

下一个问题是您应该将其从$'input[type=text]'中删除,这是一个。这里不需要上下文选择器,不管怎样,这个选择器都是不正确的

还请注意,有效的查询字符串以?并用&分隔每个值,因此需要稍微修改url连接。此外,您不应该在每次单击时更新url值。如果这样做,AJAX请求将只工作一次

最后,响应中的元数据是一个对象,而不是数组。数据是数组,因此您需要在该数组上循环。使用map也可以简化循环。试试这个:

$document.readyfunction{ 常量url=https://data.edu/api/v1/metadata; $'button[type=button]'。单击,函数E{ 让searchstring=$'input[type=text]'.val; 让requestUrl=url+`?text=${searchstring}&title=${searchstring}`; $.ajax{ 键入:“GET”, url:requestUrl, 成功:功能{ 让html=res.data.mapitem=>`Title${item.metadata.Title}`; $'results'.htmlhtml; } }; }; };
所以我尝试了你的代码,但仍然遇到同样的问题。它似乎仍然没有将搜索栏中的文本链接到url。请检查控制台是否有错误。当我向该域发出请求时,我收到一个错误,说该站点不可用。谢谢,还有一个问题,我刚刚编辑了该问题以解决。测试为有效:。太棒了!非常感谢。我知道这是另一个问题,但当我按enter键时,它不会搜索任何内容。这是我必须打的另一个电话吗?不,那是因为你使用的是type=button控件。将其更改为type=submit,并更改jQuery代码以侦听表单的提交事件,而不是侦听按钮的单击。下面是一个如何做到这一点的示例:
              <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>
data: [
    {
        collection_id: "ADGM-1552427432270-483",
        metadata:{
                   year: "2019",
                   files: text ,
                   title: text,
                },