javascript - 使用 JQuery $.get() 获取数据

标签 javascript jquery ajax

我是 java-script 的新手,我正在尝试使用 wikipedia api 构建一个简单的演示来显示我输入的结果。当我使用 jQuery $.get()在数据返回和代码继续之前访问 json 数据(因为我认为 $.get() 异步工作?),并且 dataArr 还没有捕获任何数据,所以我无法将查询结果添加到页面.js代码如下:

function getData(queryStr) {
    var dataArr = [];
    var url = 'https://en.wikipedia.org/w/api.php?format=json&action=query&generator=search&gsrnamespace=0&gsrlimit=10&prop=pageimages|extracts&pilimit=max&exintro&explaintext&exsentences=1&exlimit=max&origin=*&gsrsearch=';
    var addr = url + queryStr;
    $.get(addr, function (data) {
        console.log(data.query.pages);
        for (var key in data.query.pages) {
            dataArr.push(data.query.pages[key]);
        }
    });
    dataArr.forEach(function (elem, index) {
        if (index == 10) {
            return;
        }
        //var pageid = elem.pageid;
        var title = "<h2 class='title'>" + elem.title + "</h2>";
        var extract = '<p class="extract">' + elem.extract + '</p>';
        var resultDiv = '<div class="searchResults">' + title + abstract + '</div>';
        $(".showResultes").append(resultDiv);
    })
};

function prepareBtn() {
    var queryResult = [];
    $(".searchBtn").click(function () {
        var queryStr = "";
        if ($("#queryStr").val()) {
            queryStr = $("#queryStr").val();
            $(".showResultes").empty();
            getData(queryStr);
        } else {
            alert("please input something!");
            return;
        }
    });
}

window.onload = prepareBtn();

html 代码在这里:

<div class="form-inline text-center inputSearch">
        <img src="https://en.wikipedia.org/static/images/project-logos/enwiki-2x.png">
        <input type="text" class="form-control" id="queryStr"
               placeholder="plz input"> <button class="btn btn-primary searchBtn">search</button>
    </div>
    <div class="showResultes">

    </div>

再一次,我是网络开发的新手,如果对我的代码中的其他问题有任何建议,我将不胜感激。 `

最佳答案

你必须像下面这样使用 .done(function(){..});:-

$.get(addr, function (data) {
        console.log(data.query.pages);
        for (var key in data.query.pages) {
            dataArr.push(data.query.pages[key]);
        }
    }).done(function(){
        dataArr.forEach(function (elem, index) {
            if (index == 10) {
                return;
            }
            //var pageid = elem.pageid;
            var title = "<h2 class='title'>" + elem.title + "</h2>";
            var extract = '<p class="extract">' + elem.extract + '</p>';
            var resultDiv = '<div class="searchResults">' + title + abstract + '</div>';
            $(".showResultes").append(resultDiv);
        });
    });
};

注意:- 你也可以使用 }).complete(function () {

引用:- https://api.jquery.com/jquery.get/

关于javascript - 使用 JQuery $.get() 获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44214363/

相关文章:

jquery - 容器高度设置为容器中最后一个子项的 css 顶部 + 几像素

ajax - Wordpress wp_ajax 公共(public)网址?

javascript - jQuery Ajax 从 php 返回一些值

javascript - 单击按钮时使用 $.Ajax 获取、更新和将 JSON 放回服务器

javascript - 使用 jquery/d3 动态重用模板

Javascript 将字符串拆分为多个整数值并使用分隔符 "."返回错误值

javascript - 遍历样式对象中的每个属性

javascript - 将类添加到动态加载的菜单

javascript - 如何使用javascript设置H1的颜色?

javascript - 保持 Node 服务器运行 "watching"以便发生事情