我有一个 Bootstrap 下拉列表,当最终用户选择我想option
将href
属性上指示的参数传递给我的 php 文件的项目之一时rssnews.inc.php
,我的下拉列表如下所示:
<div class="dropdown">
<button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
Select<span class="caret"></span>
</button>
<ul class="dropdown-menu" aria-labelledby="dropdownMenu1" id="rubChoice">
<li><a href="/rss/core/inc/rssnews.inc.php?option=sport" id="act1" data-item="Sport">Sport</a></li>
<li><a href="/rss/core/inc/rssnews.inc.php?option=politique" id="act2" data-item="Politique">Politique</a></li>
<li><a href="/rss/core/inc/rssnews.inc.php?option=international" id="act3" data-item="International">International</a></li>
<li><a href="/rss/core/inc/rssnews.inc.php?option=divers" id="act4" data-item="Divers">Divers</a></li>
</ul>
</div>
我的rssnews.inc.php
文件看起来像:
function getFeed()
{
if (isset($_POST['option'])) {
$option = $_POST['option'];
switch ($option) {
case "sport":
$url = 'http://feeds.feedburner.com/GalerieArtciles';
echo 'Du sport'.$url;
break;
case "international":
$url = 'http://feeds.bbci.co.uk/news/rss.xml?edition=int#';
echo 'Du international'.$url;
break;
case "politique":
$url = 'http://www.elkhabar.com/feeds/';
echo 'du politique'.$url;
break;
default: $url = 'http://feeds.bbci.co.uk/news/rss.xml?edition=int#';
break;
}
} else {
echo "there is error";
}
$content = file_get_contents($url);
$data = simplexml_load_string($content);
$articles= array();
foreach( $data->channel->item as $item){
$articles[]=array(
'title' => (string)$item->title,
'description' => (string)$item->description,
'link' => (string)$item->link,
'Date' => (string)$item->pubDate,
);
}
$articalesArr = array();
foreach($articles as $article){
array_push($articalesArr, $article['title']);
}
return json_encode($articles);
}
if(isset($_GET['function']) && $_GET['function'] !=''){
$result = $_GET['function']();
echo json_encode($result);
header("Content-type:application/json");
}
}
要执行此功能,我有一个按钮,id="start"
当最终用户单击它时,会进行 AJAX 调用:
<button type="submit" class="btn btn-default btn-success col-xs-3" id="start"> <i class="fa fa-play"></i>Start</button>
AJAX 调用:
$('#start').click(function(){
var $item = $('#test');
$.ajax({
type:'GET',
url: '/rss/core/inc/rssnews.inc.php?function=getFeed',
//dataType: 'json',
success: function (data){
var articles = $.parseJSON(data);
$.each (articles, function (key, value) {
$item.append('<div id="item" style="border-bottom:1px dashed #ccc; padding-top:10px; padding-right: 10px;"><ul><li><h4>'+ value.title +'</h4></li> <li>'+ value.description+'</li><li><a href="'+value.link+'">Lire+</a></li></ul>');
console.log('success',data);
});
}
});
});
执行代码后,我收到此消息"there is error"
。那么,如何将下拉列表中的参数成功传输到 php 文件?知道我遵循的场景是: 1. 最终用户选择带有下拉列表的主题 2. 选择的主题对应于 URL 3. 函数 getFeed() 获取 RSS 提要 4. 当最终用户单击开始按钮时,获取 RSS 并div 元素上显示的数据 任何帮助我很感激。
自从您编辑了您的问题后更新了我的答案...
这是现在工作:
rssnews.inc.php
function getFeed()
{
if (isset($_POST['option'])) {
$option = $_POST['option'];
// dont echo strings here since you want to output json at the end
switch ($option) {
case "sport": // this is case sensitive. Your dta-item attributes had capital letter
$url = 'http://feeds.feedburner.com/GalerieArtciles';
//echo 'Du sport'.$url;
break;
case "international":
$url = 'http://feeds.bbci.co.uk/news/rss.xml?edition=int#';
//echo 'Du international'.$url;
break;
case "politique":
$url = 'http://www.elkhabar.com/feeds/';
//echo 'du politique'.$url;
break;
default: $url = 'http://feeds.bbci.co.uk/news/rss.xml?edition=int#';
break;
}
} else {
echo "there is error";
}
$content = file_get_contents($url);
$data = simplexml_load_string($content);
$articles= array();
foreach( $data->channel->item as $item){
$articles[]=array(
'title' => (string)$item->title,
'description' => (string)$item->description,
'link' => (string)$item->link,
'Date' => (string)$item->pubDate,
);
}
$articalesArr = array();
foreach($articles as $article){
array_push($articalesArr, $article['title']);
}
return json_encode($articles);
}
if(isset($_GET['function']) && $_GET['function'] !=''){
$result = $_GET['function']();
header("Content-type:application/json"); // this one must be called before echoing
echo json_encode($result);
}
HTML + Javascript 代码
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">
<div class="dropdown">
<button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
Select<span class="caret"></span>
</button>
<ul class="dropdown-menu" aria-labelledby="dropdownMenu1" id="rubChoice">
<li><a role="button" id="act1" data-item="sport">Sport</a></li>
<!-- a link is a link, if you click it, it will open url. So remove href and add role="button" to keep it valid html -->
<li><a role="button" id="act2" data-item="politique">Politique</a></li>
<li><a role="button" id="act3" data-item="international">International</a></li>
<li><a role="button" id="act4" data-item="divers">Divers</a></li>
</ul>
</div>
<div id="test">
</div>
<script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
<script type="text/javascript">
$(document).ready(function(){
$('#rubChoice li').click(function(event){ // more convenient to take the list item as selector
event.preventDefault(); // prevent link opening
var $item = $('#test');
$.ajax({
type:'POST', // change to post
url: './rssnews.inc.php?function=getFeed',
dataType: 'json', // you're expecting json...
data: {"option":$(this).find('a').attr('data-item')},
success: function (data){
var articles = $.parseJSON(data);
$.each (articles, function (key, value) {
$item.append('<div id="item" style="border-bottom:1px dashed #ccc; padding-top:10px; padding-right: 10px;"><ul><li><h4>'+ value.title +'</h4></li> <li>'+ value.description+'</li><li><a href="'+value.link+'">Lire+</a></li></ul>');
console.log('success',data);
});
}
});
});
});
</script>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句