我在过去的两天里努力争取一些工作,而且我没有想法。
基本上我有一堆缩略图的图像概述,如果我按下一个按钮,每个拇指都会获得一个复选框(这与隐藏元素一起使用),并且div会出现一个触发AJAX的按钮(也可以尝试过)到PHP脚本。
这是大致的HTML:
$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>";
这是有效的,是的,我知道它很丑,但那是因为我随着时间的推移改变了很多。 这是我的JQuery AJAX请求,其中包含一些其他东西来从复选框中收集数据:
$("#delete-selected-items").on("click", function(){
if(confirm("Weet je zeker dat je de geselecteerde items wilt verwijderen?")) {
var checked = []
$("input[name='del[]']:checked").each(function ()
{
checked.push(parseInt($(this).val()));
});
console.log(checked);
$.get('ajax-requests/delete-images', {'del[]':checked} , function(data){
console.log(data);
});
}
return false;
});
在我的PHP脚本中,我有以下内容:
<?php
echo $_SERVER['REQUEST_METHOD'];
print_r($_GET);
?>
这回应GET Array()
,就是这样......没有GET变量
还值得一提的是,在提供的html上方的同一页面上还有另一种形式。
谁能帮助我。感谢
答案 0 :(得分:0)
试试这个
$("input[name='del[]']:checked").each(function (index, obj)
{
checked.push(parseInt($(obj).val()));
});
答案 1 :(得分:0)
我不确切知道,但这些是我会尝试的事情:
您真的需要一个工具来告诉您发送到服务器的数据,例如Firebug。单击“网络”选项卡,您可以准确地看到要发送到服务器的内容以及接收内容。这将告诉您问题是在客户端还是服务器上。
知道“console.log(checked);”的输出真的很方便。这将告诉我们是否有任何东西要发送到服务器。
您需要验证jquery选择字符串匹配的元素数量。试试这个:console.log($(“input [name ='del []']:checked”)。length)这将告诉你是否有任何元素实际匹配。我怀疑元素名称中的方括号混淆了jquery选择器,因此实际上没有任何东西匹配。尝试将它们命名为“del”而不使用括号,看看是否有效。
最后,你需要在“each”函数循环中输入一个console.log语句,它输出.value()的值,这样你才知道正确的值被推送到数组上
答案 2 :(得分:0)
所以,你可能想要改变一些事情。
将输入名称从xx []更改为xx 然后使用下面的内容,看看你如何去。询问您是否需要帮助。
演示:JSFiddle
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>
JS:
$(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);
});
});
});
答案 3 :(得分:0)
我可能在这里遗漏了它,但你的ajax中的url是否需要扩展名为.php?否则,您可以将PHP更改为只有var_dump($_REQUEST);
以查看发送到页面,GET或POST的任何参数。
答案 4 :(得分:0)
解决方案:
$.get('ajax-requests/delete-images', {del: checked} , function(data){
到
$.get('ajax-requests/delete-images/', {del: checked} , function(data){
我要跳桥了