[英]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.