2014-03-26 38 views
2

我在過去2天努力工作,並且我沒有想法。獲取變量不會發送到PHP腳本

基本上我有一大堆縮略圖的圖像概述,如果我按下一個按鈕,每個拇指都會得到一個複選框(這與隱藏的元素一起工作),而一個div會出現一個會觸發AJAX的按鈕(get也嘗試過)到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

你有沒有嘗試改變{ '德爾[]':檢查}到{'德爾':checked}並在PHP中以$ _GET ['del']的身份訪問? – lshettyl

+0

是的,同樣的resault – Hawiak

+0

console.log(checked);給你? – lshettyl

回答

0

解決方案:

$.get('ajax-requests/delete-images', {del: checked} , function(data){ 

$.get('ajax-requests/delete-images/', {del: checked} , function(data){ 

我要跳的橋樑

0

試試這個

$("input[name='del[]']:checked").each(function (index, obj) 
{ 
    checked.push(parseInt($(obj).val())); 
}); 
0

我並不確切地知道,但這些都是一些事情,我會嘗試:

  • 你真的需要一個工具,會告訴你,你的數據發送到服務器,如Firebug。點擊網絡標籤,你可以看到你正在發送到服務器,並接收。這會告訴你,如果你的問題是在客戶端或服務器上。

  • 知道「console.log(checked);」的輸出將非常方便。這將告訴我們是否有任何事情要發送到服務器。

  • 您需要驗證您的jquery select字符串正在匹配的元素的數量。試試這個:console.log($(「input [name ='del []']:checked」)。length)這會告訴你是否有任何元素實際上被匹配。我懷疑元素名稱中的方括號會混淆jquery selecter,所以實際上沒有任何匹配。試着將它們命名爲「del」,沒有括號,然後看看是否有效。

  • 最後,你需要你「每個」功能迴路內的console.log語句輸出.value的()的值,所以你知道正確的值被推到陣列

+0

console.log(checked)給了我[1078]其中1078是複選框中的ID。 此外,我檢查了NET選項卡,我看不到任何正在發送的變量。 – Hawiak

+0

由於您通過GET傳遞,變量會顯示在URL本身中,如下所示:ajax-requests/delete-images?del [] = 1078或者可能是這樣:ajax-requests/delete-images?del = 1078 – Magmatic

+0

由於此操作正在做一些破壞性的操作(刪除東西),所以強烈建議使用POST而不是GET,因此您可能想要更改該操作。 – Magmatic

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); 
     }); 
    }); 
}); 
0

我可以在這裏失去了它,但它在你的AJAX的網址,以獲取需要有.php擴展名?否則,您可以將PHP更改爲僅有var_dump($_REQUEST);以查看要發送到頁面的任何參數,GET或POST。