如果在单个HTML中选择了选项,则显示PHP数据
如果选择了一个对象,我想显示来自PHP的数据。这是我写的HTML代码,但不起作用。我知道原因可能是因为PHP只执行一次,所以之后就不会显示任何内容。或者下面的PHP部分根本没有收到如果在单个HTML中选择了选项,则显示PHP数据,php,html,Php,Html,如果选择了一个对象,我想显示来自PHP的数据。这是我写的HTML代码,但不起作用。我知道原因可能是因为PHP只执行一次,所以之后就不会显示任何内容。或者下面的PHP部分根本没有收到软件对象。我应该有一个Javascript来进行显示吗?有必要吗 <select name="software" onchange="showSoftware(this.value)"> <?php foreach ($softwareCollection as $software): ?>
软件
对象。我应该有一个Javascript来进行显示吗?有必要吗
<select name="software" onchange="showSoftware(this.value)">
<?php foreach ($softwareCollection as $software): ?>
<option value="<?php echo $software ?>">
<?php echo $software->date?>
</option>
<?php endforeach; ?>
</select>
<script>
function showSoftware(software) {
jQuery.ajax({
type: "POST",
data: {software: software},
success: function(data) {
console.log(data);
}
});
}
</script>
<?php if (isset($_POST['software'])): ?>
<?php foreach ($software->links as $link): ?>
<tr>
<td>
<?php echo $link->title; ?>
</td>
<td>
<?php echo $link->url; ?>
</td>
</tr>
<?php endforeach; ?>
<?php endif; ?>
var-links=[];
var-softwareId='';
var softwareDate='';
links.push({
标题:“”,说明:“”,
url:“”
});
推送({id:softwareId,date:softwareDate,links:links});
softwarecolection.sort((a,b)=>(a.date
此代码未经测试,但这应该适用于您试图实现的目标。更改的select将触发对单独的software.php文件的ajax调用,该文件包含您的代码,并将数据返回到#softwareress
div。希望这对您有所帮助,我还使用了短码回音来稍微整理这种方式
index.html
此代码未经测试,但这应该适用于您试图实现的目标。更改的select将触发对单独的software.php文件的ajax调用,该文件包含您的代码,并将数据返回到#softwareress
div。希望这对您有所帮助,我还使用了短码回音来稍微整理这种方式
index.html
有点不相关,但为什么要在自己的开始和结束括号中执行每一行PHP
?为什么不直接执行
?您的选项语句中有一个错误:
应该是
或
@GROVER。我对网络开发还很陌生,我不知道我可以这样做,谢谢你的评论。@Nick谢谢你的更正。我正在考虑将$software
对象传递给函数,这样我就不会使用echo
,因为它试图将对象转换为字符串并给出错误。我稍微修改了代码以传递$software->id
,并根据它找到对象,但仍然不起作用。我没有注意到$software
是一个对象,您需要将echo$software
更改为echo$software->xxx
(在不知道对象结构的情况下,我无法说出xxx
应该是什么,但可能是id?)。有点不相关,但是为什么你要在自己的开始和结束括号中做每一行PHP
?为什么不做
?你的选项语句中有一个错误:
应该是
或
@GROVER。我对web开发非常陌生,我不知道我可以这样做,谢谢你的支持注释。@Nick感谢您的更正。我正在考虑将$software
对象传递给函数,这样我就没有使用echo
,因为它试图将对象转换为字符串并给出错误。我稍微修改了代码以传递$software->id
,并根据它找到对象,但仍然不起作用。我没有这样做“我没有注意到,$software
是一个对象,您需要将echo$software
更改为echo$software->xxx
(在不知道对象结构的情况下,我无法说出xxx
应该是什么,但可能是id?)。我想你是对的。PHP根本没有捕获到“软件”
。但是,如果我想更新HTML,我是否需要添加Javascript来完成此操作,或者软件。PHP
可以通过成功返回的数据进行更新。请注意成功函数$(“#软件响应”).HTML(数据)
这告诉您,每次对software.php文件进行查找时,该div中的HTML都将被替换。因此,每次更改select时,该div中包含的HTML将被替换为答案(如果可用)。实际上,您这次将解释$\u POST变量,因为您有software.php文件除了post to,请注意ajax对象中添加了url
字段;以前您不会将数据发送到任何特定位置。请告诉我这是否适用于您。:)我认为您是对的。PHP根本没有捕捉到“软件”
。但是,如果我想更新HTML,我是否需要添加Javascript来完成此操作,或者software.php
可以通过成功返回的数据进行更新。请注意成功函数$('#softwaresponse').HTML(数据)
这告诉我们,每次对software.php文件进行查找时,都要替换该div中的HTML。因此,每次更改select时,该div中包含的HTML将被替换为答案(如果可用)。实际上,这次您将解释$\u POST变量,因为您有单独的software.php文件要发布到,请注意ajax对象中添加了url
字段;以前,您不会将数据发送到特定的任何地方。让我知道这是否适合您。:)
<script>
require(['jquery'], function($) {
jQuery(document).ready(function($) {
/*
* Cache the softwareCollection
*/
var softwareCollection = [];
<?php foreach ($softwareCollection = $this->getSoftware() as $software): ?>
var links = [];
var softwareId = '<?php echo $software->id ?>';
var softwareDate = '<?php echo $software->date->date?>';
<?php foreach ($software->links as $link): ?>
links.push({
title: '<?php echo $link->title ?>', description: '<?php echo $link->description?>',
url: '<?php echo $link->url ?>'
});
<?php endforeach; ?>
softwareCollection.push({id: softwareId, date: softwareDate, links: links});
<?php endforeach; ?>
softwareCollection.sort((a, b) => (a.date < b.date));
const $this = $('select[name=software]');
for (var i = 0; i < softwareCollection.length; i++) {
$this.append(
'<option value=\"' + softwareCollection[i].id + '\">' + softwareCollection[i].date + '</option>'
);
}
}
}
</script>
<select id="softwareSelect" name="software">
<?php foreach($softwareCollection as $software): ?>
<option value="<?=$software;?>"><?=$software->date;?></option>
<?php endforeach; ?>
</select>
<div id="softwareResponse"></div>
<script>
jQuery(document).ready(function($) {
$( '#softwareSelect' ).change(function () {
$.ajax({
url: 'software.php'
type: 'POST',
data: {software: $(this).val()},
success: function(data) {
$('#softwareResponse').html(data);
}
});
});
});
</script>
<?php if(isset($_POST['software'])): ?>
<table>
<?php foreach ($software->links as $link): ?>
<tr>
<td><?=$link->title); ?></td><td><?=$link->url); ?></td>
</tr>
<?php endforeach; ?>
</table>
<?php else: ?>
<p>No software selected.</p>
<?php endif; ?>