繁体   English   中英

AJAX调用错误调用带有JSON返回的PHP函数

[英]Error on AJAX call PHP function with JSON return

我想用三种技术开发一个News Ticker: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;
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM