[英]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.