2013-02-19 4 views
0

Я работаю над проектом, где я получил имя и значения из выбранных флажков с помощью jquery/ajax. Я установил имена и значения флажков, используя php на главной странице. Я хотел бы извлечь имена с помощью $ _POST в отдельном php-скрипте, чтобы я мог использовать эти имена для удаления проектов из MySQL.

$("#deleteproject").click(function() { 
    var names = []; 
    $('#projectcheckbox input:checked').each(function() { 
     //all checkbox names are put in array 
     names.push({name: $(this).attr('name'), value: $(this).val()}); 
    }); 
    alert($.param(names)); 
    return false; 
}); 

выше предупреждение ($. Пары) возвращает флажок в val1.name и val1.value формата.

//run delete_project.php to erase projects from database 
$.ajax({ 
    type: "post", 
    url:"delete_project.php", 
    data: names, 
    cache: false, 
    success:function() { 
     alert(names + ' deleted') 
    } 
}); 

Я искал ответ в последние дни пары, и я был бы признателен за помощь в выяснении этого.

+0

Как связаны эти два фрагмента JavaScript? Как написано в этом вопросе, «имена» в обратном вызове клика не имеют никакого отношения к «именам» в вызове '$ .ajax(). В этом случае, почему вы не просто ['.serialize()'] (http://api.jquery.com/serialize/) в форме (предположительно '# projectcheckbox')? –

+0

сейчас я использую первую часть, чтобы получить имена и значения выбранных флажков, тогда я намерен передать данные в отдельный скрипт php, используя ajax ниже. У меня возникли проблемы с получением всего первого скрипта, чтобы вернуть правильные имена. Забытые изменения включают второй скрипт в onclick. Какая польза от .serialize() над тем, что я сейчас делаю? – user2081470

+0

Итак, как именно вы ожидаете, что '' '' 'в' '$ .ajax()' вызов будет установлен? Как только этот обратный вызов будет завершен, «имена» исчезнут. –

ответ

3

Я бы предпочла использовать html-часть таким образом во-первых, потому что это более гибко и легко в вашем случае;

<input type="checkbox" name="projectcheckbox[]" value="foo_project" /> 
<input type="checkbox" name="projectcheckbox[]" value="bar_project" /> 
... 

Или сначала распечатать результаты поиска;

foreach ($projects as $project) { 
    print '<input type="checkbox" name="projectcheckbox[]" value="'.$project.'" />'; 
} 

Тогда звонок jQuery.serialize даст вам данные, такие как;

projectcheckbox[]=foo_project&projectcheckbox[]=bar_project ... 

Часть PHP (после должности);

foreach ((array) $_POST['projectcheckbox'] as $pro) { 
    // do something with $pro = foo_project or bar_project etc... 
    // THIS PART FOR SECURITY GUYS :) 
    // BUT! DO NOT FORGET TO SECURE YOUR DATA ($pro) HERE!!!!! 
} 
+2

почему минус один ..? – Popnoodles

+0

Хотелось бы, чтобы я знал это. –

+1

Возможно, из-за отсутствия 'htmlspecialchars()' или что-то. Не стоит нисходящего голоса. +1 от меня – Phil