2012-01-06 39 views
1

JQUERY:在PHP读取序列jQuery的数据(多个复选框)

$(document).ready(function(){ 
    $('form').submit(function(){ 
     var content = $(this).serialize(); 
     //alert(content); 
     $.ajax({ 
      type: 'POST', 
      dataType: 'json', 
      url: 'http://localhost/test/generate', 
      timeout: 15000, 
      data:{ content: content }, 
      success: function(data){ 
       $('.box').html(data).fadeIn(1000); 
      }, 
      error: function(){ 
       $('.box').html('error').fadeIn(1000); 
      } 
     }); 
     return false; 
    }); 
}); 

HTML:

<form> 
<input type="checkbox" value="first" name="opts[]"> 
<input type="checkbox" value="second" name="opts[]"> 
<input type="checkbox" value="third" name="opts[]"> 
<input type="submit"> 
</form> 

我如何处理(或读取)多个选中的复选框在PHP价值?我试着做$_POST['content']来抓取序列化的数据,但没有运气。

+1

是否有你需要发送数据作为JSON理由吗?表单的默认帖子将使您的数据可用为'$ _POST ['opts']'(它将返回一个数组)。如果你需要将它保存为json,请尝试'var_dump($ _ POST)'来查看你得到的结果。 – Grexis 2012-01-06 08:11:58

+0

他没有将数据作为JSON发送。 'dataType'参数表示服务器响应内容类型,而不是请求。 – 2012-01-06 08:13:41

+0

@Darin啊,我没有使用jQuery很多,(它显示?:D),但我指的是他的形式和'data:{content:content}'行的序列化 – Grexis 2012-01-06 08:17:26

回答

5

替换:

data:{ content: content } // <!-- you are prefixing with content which is wrong 

有:

data: content 

现在,在你的PHP脚本可以使用$_POST['opts']通常应返回数组。

+0

你让我了!谢谢。 – Michelle 2012-01-06 08:25:40

+0

谢谢 我每次都用错方法... – softsdev 2013-09-04 02:37:03

1

尝试

echo $_POST['opts'][0]. "<br />"; 
echo $_POST['opts'][1]. "<br />"; 
echo $_POST['opts'][2]. "<br />"; 

你发布一个阵列到服务器,并在后变量“选择采用”可用。记住:未经检查的箱子不会被张贴。

-2

有你的代码中的错误:与扩展名

  1. URL应该url: 'http://localhost/test/generate.php'
+0

我正在使用框架 – Michelle 2012-01-06 08:25:22

0

所选择的答案仍然没有为我工作,但这里是什么做的:

var checkedBoxesArr = new Array(); 
$("input[name='checkedBoxes']:checked").each(function() { 
    checkedBoxesArr.push($(this).val()); 
}); 
var checkedBoxesStr = checkedBoxesArr.toString(); 
var dataString = $("#" + formID).serialize() + 
        '&checkedBoxesStr=' + checkedBoxesStr; 

[上述代码放在您的JavaScript,串行化形式的数据之前]
首先,循环选中的框并将它们放入数组中。
接下来,将数组转换为字符串。
最后,将它们手动追加到序列化表单数据 - 这样,您可以在PHP中引用字符串,并与其他序列化数据一起引用。

这个答案出来一部分来自这个帖子:Send multiple checkbox data to PHP via jQuery ajax()