使用JSON返回

时间:2017-02-22 00:01:59

标签: 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({{1用于使用AJAX显示数据

id="item"

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

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

1 个答案:

答案 0 :(得分:0)

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

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

或使用绝对路径,如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;
    }