Javascript GetJSON jquery返回未定义的
我试图让我的搜索框工作,并对文本搜索和标题执行getJSON。但是在控制台日志中,我得到text=undefined?title=undefined。所以它没有显示任何JSON。不确定我的单击是否正常工作,或者是否必须创建JSON对象 剧本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";
<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,
},