【问题标题】:Jquery post only checked variables. How to do it right?Jquery post 仅检查变量。怎么做才对?
【发布时间】:2018-09-13 18:08:21
【问题描述】:

我有这个 HTML 代码:

<form name="allcats">
<p class='catslist'><label><input type='checkbox' name='cat1' id='cat1' value='1'  /> AAAAAAA</label></p>
<p class='catslist'><label><input type='checkbox' name='cat2' id='cat2' value='2'  /> BBBBBB</label></p>
<p class='catslist'><label><input type='checkbox' name='cat3' id='cat3' value='3'  /> CCCCCC</label></p>
<p class='catslist'><label><input type='checkbox' name='cat4' id='cat4' value='4'  /> DDDDDDD</label></p>
<p class='catslist'><label><input type='checkbox' name='cat5' id='cat5' value='5'  /> EEEEEEEE</label></p>


<input type="hidden" name="book_id" value="12" />     <br />
<input name="catsadd" id="catsadd" type="button" value="Add catategories" onclick="check();"/>
</form>

我的 jQuery 代码是:

function check(){

$.post('post__categories.php', { HERE MUST BE THE VARIABLES AND VALUES OF CHECKED checkboxes like ... cat1: allcats.cat1.valu, cat5: allcats.cat5.value},

function(output){
 $('#result').hide();
 $('#result').html(output).fadeIn("slow");

 });
 }

我的目标是发送以发布我检查的变量,然后我的 PHP 代码将完成它的工作。

但构造必须像变量:myform.variable.value

如何通过 jQuery 只获取选中的框?

【问题讨论】:

    标签: jquery post checkbox checked


    【解决方案1】:

    首先,给你的表单一个 ID 以便更容易定位:

    <form name="allcats" id="allcats">
    <p class='catslist'><label><input type='checkbox' name='cat1' id='cat1' value='1'  /> AAAAAAA</label></p>
    <p class='catslist'><label><input type='checkbox' name='cat2' id='cat2' value='2'  /> BBBBBB</label></p>
    <p class='catslist'><label><input type='checkbox' name='cat3' id='cat3' value='3'  /> CCCCCC</label></p>
    <p class='catslist'><label><input type='checkbox' name='cat4' id='cat4' value='4'  /> DDDDDDD</label></p>
    <p class='catslist'><label><input type='checkbox' name='cat5' id='cat5' value='5'  /> EEEEEEEE</label></p>
    
    
    <input type="hidden" name="book_id" value="12" />     <br />
    <input name="catsadd" id="catsadd" type="button" value="Add catategories" onclick="check();"/>
    </form>
    

    然后,你需要序列化你请求中的表单数据:

    $.post('post__categories.php', { $("#allcats").serialize()});
    

    【讨论】:

    • but serialize() make variables like: a=1&b=2&c=3&d=4 但是 $.post 需要 a: 1, b: 2 ... 那怎么办?我已经尝试了你的建议..但仍然无法正常工作((
    • 这正是您需要的格式。例如,您应该能够在 PHP 脚本中使用 $_POST['cat1'] 访问 cat1。
    • 我的PHP代码是for ($c=0; $c&lt;=$catscount; $c++){ if (isset($_POST['cat'.$c])) { $data['book_id'] = $_POST['book_id']; $data['cat_id'] = $_POST['cat'.$c]; if ($db-&gt;insert("Books_Cats_REL", $data)){ $done = "1";} } }
    • 这是一个单独的问题。您的 PHP 脚本从 0 开始计数器,这是毫无意义的。它还将迭代到最大 catX 值之上。您应该添加 var_dump($_POST);到这个脚本,并仔细看看传入的 $_POST 数据的结构。我已经回答了 this 问题,因此您应该将其标记为已回答,因为 PHP 问题是一个单独的问题。
    • $c=0 是旧版本对不起.. 我的正确代码 $c=1。我的 PHP 等待变量将它们添加到 Mysql。如果没有 Jquery,我可以毫无问题地做到这一点。但是现在我使用 Jquery 并且我的 PHP 等待 cat1 之类的变量:allcats.cat1.value .. 告诉我在这种情况下,当序列化变量类似于 cat1=1&cat2=2 .. 有什么想法吗?
    猜你喜欢
    • 2022-11-21
    • 1970-01-01
    • 1970-01-01
    • 2017-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多