PHP returns JSON 很好但是 JavaScript 显示它在 onload 函数中未定义
PHP returns JSON fine but JavaScript shows it is undefined in onload function
我不知道如何解决这个问题,所以我请求你帮助我。
我正在尝试将 RSS 提要解析为 JSON,但由于 XSS 问题无法使用 JS 完成(我没有使用 jQuery 所以不推荐我插件)。我想我会在 PHP 的帮助下完成这项工作,并编写了一些代码来获取 url、解析它、一些循环等,并且它 returns 正确的 JSON 对象内部有数组它可以在网络部分下的 Chrome DevTools 中看到。
问题是 JavaScript 向我显示响应文本未定义。我已经尝试解决这个问题 3 个小时了,但我无法弄清楚。
这是JS代码:
this.fetchNews = function ( feed ) {
var method = 'GET';
var url = 'feed.php';
var target = encodeURIComponent( feed );
var params = '?target=' + target;
var request = new XMLHttpRequest();
request.open( method, url + params, true );
request.setRequestHeader( 'Content-Type', 'application/json; charset=utf-8' );
request.onload = function () {
if ( request.readyState === 4 ) {
if ( request.status === 200 ) {
console.error( this.reponseText );
var list = this.reponseText;
for ( var i in list ) {
i.push( self.news.list );
}
console.error( self.newst.list );
}
}
};
request.send( null );
};
this.fetchNews.call( this, 'http://phys.org/rss-feed/&num=20' );
这里是 PHP:
$url = $_GET['target'];
$xml = file_get_contents( $url );
$feed = simplexml_load_string( $xml );
$output = array(
'items' => array()
);
$items = $feed->channel[0];
$i = 0;
foreach ( $items->item as $item ) {
$title = $item->title;
$title = (String)$title;
$output['items'][$i++] = $title;
}
echo json_encode( $output );
Yeeeeez 我是个白痴,我写了 this.reponseText
而不是 this.responseText
。抱歉给您带来麻烦...
我不知道如何解决这个问题,所以我请求你帮助我。
我正在尝试将 RSS 提要解析为 JSON,但由于 XSS 问题无法使用 JS 完成(我没有使用 jQuery 所以不推荐我插件)。我想我会在 PHP 的帮助下完成这项工作,并编写了一些代码来获取 url、解析它、一些循环等,并且它 returns 正确的 JSON 对象内部有数组它可以在网络部分下的 Chrome DevTools 中看到。
问题是 JavaScript 向我显示响应文本未定义。我已经尝试解决这个问题 3 个小时了,但我无法弄清楚。
这是JS代码:
this.fetchNews = function ( feed ) {
var method = 'GET';
var url = 'feed.php';
var target = encodeURIComponent( feed );
var params = '?target=' + target;
var request = new XMLHttpRequest();
request.open( method, url + params, true );
request.setRequestHeader( 'Content-Type', 'application/json; charset=utf-8' );
request.onload = function () {
if ( request.readyState === 4 ) {
if ( request.status === 200 ) {
console.error( this.reponseText );
var list = this.reponseText;
for ( var i in list ) {
i.push( self.news.list );
}
console.error( self.newst.list );
}
}
};
request.send( null );
};
this.fetchNews.call( this, 'http://phys.org/rss-feed/&num=20' );
这里是 PHP:
$url = $_GET['target'];
$xml = file_get_contents( $url );
$feed = simplexml_load_string( $xml );
$output = array(
'items' => array()
);
$items = $feed->channel[0];
$i = 0;
foreach ( $items->item as $item ) {
$title = $item->title;
$title = (String)$title;
$output['items'][$i++] = $title;
}
echo json_encode( $output );
Yeeeeez 我是个白痴,我写了 this.reponseText
而不是 this.responseText
。抱歉给您带来麻烦...