Javascript 获取变量不获取发送到PHP脚本
在过去的两天里,我一直在努力找到工作,但我的想法太多了 基本上,我有一个带有一堆缩略图的图像概览,如果我按下一个按钮,每个拇指都会得到一个复选框,这个复选框与一个隐藏元素一起工作,并且会出现一个div,该div带有一个按钮,该按钮将触发一个AJAX get,也会尝试发布到PHP脚本 这是HTML的大致格式:Javascript 获取变量不获取发送到PHP脚本,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,在过去的两天里,我一直在努力找到工作,但我的想法太多了 基本上,我有一个带有一堆缩略图的图像概览,如果我按下一个按钮,每个拇指都会得到一个复选框,这个复选框与一个隐藏元素一起工作,并且会出现一个div,该div带有一个按钮,该按钮将触发一个AJAX get,也会尝试发布到PHP脚本 这是HTML的大致格式: $output .= '<div id="edit-menu" style="display:none; position:fixed; top:150px; right:0px;"
$output .= '<div id="edit-menu" style="display:none; position:fixed; top:150px; right:0px;" class="panel">
<div class="panel-heading">Bewerk geselecteerde items</div>
</div>';
foreach($results as $file){
if($config->ajax){
$image = $file->image;
}else{
$image = $file->image;
}
if($image){
$output .= '<div class="col-md-3 col-lg-2 col-sm-4">
<div class="edit-wrapper" style="display:none;">
<input type="checkbox" name="del[]" value="' . $file->id . '"></div>
<div class="thumbnail"><div class="caption">
<h4>' . $file->title . '</h4><p><a href="' . $config->urls->root . 'view-image/' . $file->id . '" class="label label-danger fancybox fancybox.ajax" data-fancybox-type="ajax" rel="tooltip" title="Bekijk">Bekijk</a>
<a href="' . $pages->get('/register-use/')->url ."?picture_id=" . $file->id . '" id="' . $file->id . '" class="label label-default" rel="tooltip" title="Download now">Download</a></p></div>';
$img = $image->size(150,150);
$output .= '<img src="' . $img->url . '" alt="...">';
$output .= '</div></div>';
}
}
$output .= '<input name="submit" type="submit" class="btn btn-danger" id="delete-selected-items" value="Verwijder"/>';
$output .= "</div>";
在我的PHP脚本中,我有以下内容:
<?php
echo $_SERVER['REQUEST_METHOD'];
print_r($_GET);
?>
这个回音得到数组,就这样。。。没有GET变量
同样值得一提的是,在同一页面上提供的html上方还有另一个表单
谁能帮我。谢谢你试试这个
$("input[name='del[]']:checked").each(function (index, obj)
{
checked.push(parseInt($(obj).val()));
});
我不太清楚,但我会尝试以下几点: 您真的需要一个工具来告诉您要发送到服务器的数据,比如Firebug。单击“网络”选项卡,您可以准确地看到向服务器发送和接收的内容。这将告诉您问题是在客户端还是服务器上 了解console.logchecked;的输出非常方便;。这将告诉我们是否有任何东西将被发送到服务器 您需要验证jquery选择字符串匹配的元素数。试试这个:console.log$input[name='del[]']:checked.length这将告诉您是否有任何元素实际匹配。我怀疑元素名称中的方括号混淆了jquery选择器,因此实际上没有匹配的内容。试着把它们命名为没有括号的del,看看是否有效 最后,在输出.value值的each函数循环中需要一个console.log语句,以便知道正确的值被推送到数组中
所以,你可能不想改变什么 将输入名称从xx[]更改为xx 然后使用下面的选项,看看你是怎么做的。询问你是否需要帮助 演示: 仅HTML示例
<div id="edit-menu" class="panel">
<div class="panel-heading">Bewerk geselecteerde items</div>
</div>
<div class="col-md-3 col-lg-2 col-sm-4">
<div class="edit-wrapper">
<input type="checkbox" name="del" value="one">
<input type="checkbox" name="del" value="two">
<input type="checkbox" name="del" value="three">
<input type="checkbox" name="del" value="four">
<input type="checkbox" name="del" value="five">
<input name="submit" type="submit" class="btn btn-danger" id="delete-selected-items" value="Verwijder"/>
</div>
</div>
我可能在这里遗漏了它,但是ajax中的url是否需要.php扩展名?否则,您可以将PHP更改为只有var_dump$请求;要查看发送到页面的任何参数,请获取或发布。解决方案:
$.get('ajax-requests/delete-images', {del: checked} , function(data){
到
我要跳桥了你试过把{'del[]':checked}改成{'del':checked}并以$_GET['del']的形式访问PHP吗?console.logchecked;给你?如果checked为空,它似乎不会发送带有del参数的请求。但是如果其中有一个值,它会发送带有del的请求。我刚刚测试了你的代码,这就是我发现的。可能$input[name='del[]']:checked没有返回任何内容console.logchecked提供[1078],其中1078是复选框中的ID。另外,我检查了NET选项卡,看不到任何get变量被发送过来。由于您通过get传递,变量将显示在URL本身中,如:ajax请求/删除图像?del[]=1078,或者可能是:ajax请求/删除图像?del=1078因为此操作正在进行破坏性的删除操作,强烈建议使用POST而不是GET,因此无论如何您可能都想更改它。当我看到$\u服务器['REQUEST\u METHOD']回显GET时,我在最初使用POST之后将其更改为GET/
$(function() {
var checked = [];
$('#delete-selected-items').click(function(){
$("input[name='del']:checked").each(function () {
checked.push( $(this).val() );
//use the below ONLY if your values are numbers;
//checked.push( +($(this).val()) );
});
alert(checked);
$.get('ajax-requests/delete-images', {del: checked} , function(data){
console.log(data);
});
});
});
$.get('ajax-requests/delete-images', {del: checked} , function(data){
$.get('ajax-requests/delete-images/', {del: checked} , function(data){