javascript - AJAX 调用 PHP 函数并返回 JSON 时出错

标签 javascript php jquery html ajax

我想使用三种技术开发新闻行情栏:PHP、Javascript 和 AJAX。 首先,我创建了一个 PHP 函数 getFeed() 来从数组上的新闻网站获取数据,然后使用以下代码创建了一个 JSON 返回:echo json_encode($articles, true);

其次,我的目标是使用 AJAX 和 Javascript 重复调用 getFeed() 函数,这是我的 javascript 代码:

<script type="text/javasript">
    var xmlhttp=false;
    function begin() {

        if(window.XMLHttpRequest){
            xmlhttp = new XMLHttpRequest();
        }else{
            xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
        }

        xmlhttp.onreadystatechange = function () {
            if (this.readyState == 4 && this.status == 200){
                var jsonContent=JSON.parse(this.responseText);
                displayT(jsonContent);

            }
        };

     // rssnews.inc.php contain the getFeed() function

        xmlhttp.open('GET','rssnews.inc.php', true);
        xmlhttp.send();
        }
     // displayT(content) function display the JSON element
        function displayT(content){
            var out = "";
            var i;

            for(i = 0; i < arr.length; i++) {
                out += '<h4><a href="' + arr[i].link+ '">' + 
                arr[i].title + '</a></h4><br>';
            }
            document.getElementById('item').innerHTML = out;
        }
</script>

在 HTML 页面上,我有以下组件:一个按钮 (id="start") - 单击时执行 begin() 函数、一个 div 容器 (id="Ticker") 和一个 div (id="item"),用于使用 AJAX 显示数据

<form>
    <button type="submit" class="btn btn-default" id="start" onclick="begin();"> START </button>
</form>

<div  id= "ticker" style="border: 1px solid #ccc; height: 500px; weight:600px;">

    <div id="item">
        <!-- I want to display the fetched data by 4 items at a specific time Interval-->           
    </div>

</div>

当我点击开始按钮时,我没有得到json数据。

如何解决这个问题以及如何确保此 AJAX 调用是最适合我的 Ticker 的方式。 谢谢你!

最佳答案

该错误本质上是说您尝试通过 AJAX 调用获取的文件在指定位置不存在(即 http://localhost/rss/rssnews.inc.php )

您正在使用相对路径,它会在同一文件夹中搜索“rssnews.inc.php”。要转到父目录,请使用 ../.

或者使用绝对路径,如http://localhost/rss/rssnews.inc.php(替换为 PHP 脚本的绝对路径)

更新

(HTTP 401 解决后)

displayT 函数将 content 作为输入,然后引用未定义的 arr

假设 content 实际上是一个包含所需格式数据的数组,请将 arr 替换为 content:

function displayT(content){
        var out = "";
        var i;

        for(i = 0; i < content.length; i++) {
            out += '<h4><a href="' + content[i].link+ '">' + 
            content[i].title + '</a></h4><br>';
        }
        document.getElementById('item').innerHTML = out;
    }

关于javascript - AJAX 调用 PHP 函数并返回 JSON 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42380284/

相关文章:

javascript - HTML/服务器函数交互(GET、POST)

javascript - Html 包含 jQuery

javascript - 将 HTML 元素列表转换为对象的 Javascript 列表

javascript继承和实例变量

javascript - 如何在 AngularJS 单元测试中 stub `$window.localStorage`?

php - Codeigniter 分页和搜索问题

php - 文件路径错误,路径开头有正斜杠

javascript - 在 jQuery Masonry 中附加项目的问题

javascript - Javascript自定义视频播放器当前时间/总时间

java - 解码由php保存的未知字符集文本