我有一个复选框,在选中时,该值可由$ _GET [' image_name']检索。它适用于我的其他PHP代码,但我在使用ajax时遇到了一些麻烦。一定要简单。它不是"得到" image_name变量(这是一个数组)。
我正在使用以下代码,输出只是" image_name为空"。
<input type="checkbox" id="<?php echo $i ?>" class="checkbox" value="some_image.jpg" name="image_name[]"/>
<button type="button" onClick="rename_image()" class="button_class" name="rename" id="rename" value="rename">Rename</button>
和js:
function rename_image()
{
var button = document.getElementById('options_menu_details');
{
var div = document.getElementById('show_options_rename'); // display select_show
if (div.style.visibility == 'hidden')
{
div.style.visibility = 'visible';
$.ajax
(
{
url:"test4.php",
type: "GET",
data: {func: 'toptable'},
success:function(result)
{
alert(result);
}
}
);
}
else
{
div.style.visibility = 'hidden';
}
}
}
和php文件test4.php:
<?php //test4.php
function toptable()
{
echo 'toptable';
}
if(empty($_GET['image_name']))
{
echo '<div class="refto" id="refto">image_name is empty</div>';
}
else
{
foreach($_GET['image_name'] as $rowid_rename)
{
echo '<div class="refto" id="refto">image_name is NOT empty</div><br>';
}
}
echo "test";
?>
ajax是否实际获取了image_name []或者我有什么遗漏?用户选中复选框,然后点击&#34;重命名&#34;按钮。但是ajax似乎没有拿起复选框而我想要它。
提前致谢。
答案 0 :(得分:0)
如果我们查看jQuery $.ajax() documentation,我们会看到data
标记包含您要通过GET请求发送的所有内容。您现在唯一要通过GET请求发送的内容是?func = toptable。
您需要将复选框的值添加到其中,然后我才会工作。
为了调试此类问题,开发人员控制台非常方便(特别是网络选项卡)!
答案 1 :(得分:0)
在我的HTML页面上,我定义了一个javascript函数,它接受数组的基本名称并处理它(请注意,我将它们存储在由冒号分隔的数据库中的一个字段中,因此我将它们全部转换为一个要发送到处理PHP脚本的字符串) -
function SaveCheckboxes(cbref){
var myVal="";
toSave=document.forms['formName'].elements[cbref];
for(j=0;j<toSave.length;j++){
if(toSave[j].checked){
myVal+=":"+toSave[j].value;
}
}
var pass_data = {
'radioID' : "gened",
'radioVal' : myVal,
};
$.ajax({
url : "saveIt.php",
type : "POST",
data : pass_data,
success : function(data) {
}
});
return false;
}
当我在HTML中创建复选框时(好吧,我从带有PHP的数组中读取...)我告诉它在onClick上调用该函数 -
print("<input onClick=\"SaveCheckboxes('gened[]');\"");
if(in_array($gened_courses[$i],$geneds)){print(" checked ");}
print(" type=checkbox name=gened[] value=".$gened_courses[$i]."><font face=\"courier\">".$gened_courses[$i]."</font>: ".ucwords(strtolower($course_names[$gened_courses[$i]]))." <br />\n");
答案 2 :(得分:0)
我需要修改以下行:
<script src="http://www.chartjs.org/dist/2.7.2/Chart.bundle.js"></script>
<canvas id="m-chart-562-1"></canvas>
<script type="text/javascript">
new Chart(
document.getElementById('m-chart-562-1').getContext('2d'),
{
"type": "bar",
"options": {
"title": {
"display": true,
"text": "Test"
},
"legend": {
"display": true,
"position": "bottom"
},
"scales": {
"xAxes": {
"scaleLabel": {
"display": true,
"labelString": "Horizontal Axis"
}
},
"yAxes": {
"scaleLabel": {
"display": true,
"labelString": "Vertical Axis"
}
}
}
},
"data": {
"datasets": [{
"label": "Number",
"data": [10, 2, 7],
"backgroundColor": "#7cb5ec"
}, {
"label": "Fatalities",
"data": [5, 0, 1],
"backgroundColor": "#434348"
}],
"labels": ["Cars", "Planes", "Boats"]
}
}
);
</script>
到此:
data: {func: 'toptable'},
似乎序列化从表单中收集data: $('form').serialize(),
信息并将其处理成PHP可以$ _GET的格式,例如我的$ GET ['image_name']现在正在运作。如我错了请纠正我。