无法弄清楚如何从ajax调用中获得响应

时间:2019-08-02 17:37:48

标签: javascript node.js typescript fetch-api

我有此代码:

render() {
    var urlstr : string = 'http://localhost:8081/dashboard2/sustain-master/resources/data/search_energy_performance_by_region.php';
    urlstr = urlstr + "?division=sdsdfdsf";
    urlstr = urlstr + "&region=sfdsf";
    urlstr = urlstr + "&date_from=sfdsf";
    urlstr = urlstr + "&date_to=sfdsf";
    urlstr = urlstr + "&sq_from=sfdsf";
    urlstr = urlstr + "&sq_to=sfsd";

    console.log("--------------------------");

    fetch(urlstr)
        .then(response => {
            console.log("==================================");
            console.log(response);

            if(!response.ok){
                (document.getElementById('result_div') as HTMLInputElement).innerHTML = 'error';
                console.log("error");
            }else{
                (document.getElementById('result_div') as HTMLInputElement).innerHTML = 'ok';
                console.log("ok");
            }
        });

    console.log("--------------------------");

    return(
        <div id='result_div'>
            test
        </div>
    )
}

请原谅console.log行,这是我试图跟踪此问题的原因。

但是,当在Node上调用该页面时,它应该调用远程服务器(在这种情况下,是在我的本地计算机上运行的apache服务器,该服务器对数据库运行选择并返回JSON对象),然后返回浏览器将“测试”字符串作为页面。然后,当这些东西完成运行后,应该在那个result_div中放入错误或确定。

我实际上知道对php页面的调用正在运行-我可以在该服务器上执行show processlist并查看执行中的选择。但是问题在于,打字稿代码似乎在完成向后发送数据后实际上从未进行过回调工作。

我在做什么错了?

1 个答案:

答案 0 :(得分:0)

您是否忘记首先在响应中致电.json()

    fetch(urlstr)
        .then(response => {
            if(!response.ok) {
                (document.getElementById('result_div') as HTMLInputElement).innerHTML = 'error';
                console.log("error");
            } else {
                (document.getElementById('result_div') as HTMLInputElement).innerHTML = 'ok';
                console.log("ok");
            }
            return response.json();
        })
        .then(data => {
            console.log(data);
        });