如何在php中接收Ajax .post发送的数据

时间:2013-10-11 15:42:20

标签: php jquery ajax

我正在使用当前的Ajax请求来获取我所拥有的“已选中”复选框的ID。

$(function() {
    $(":checkbox").click(function(){
        $.post("ci_editor.php", { id: this.id, checked: this.checked });
    });                 
});

此功能有效,问题是我不知道如何在“ci_editor.php”文件中接收它。

我知道我必须使用$ _POST方法,但是我用什么作为参数,因为我甚至不知道要检查的内容的id?

2 个答案:

答案 0 :(得分:1)

如果未选中该复选框,您将无法抓住该帖子。在这种情况下,您应该创建一个包含所有期望输入名称的数组(包括复选框)并循环遍历此数组,检查输入名称是否存在于$ _POST数组中。

在否定的情况下,您确定用户没有点击该复选框。

答案 1 :(得分:0)

$ _ POST不是方法,它是superglobal variable,因此您发送的值包含在$ _POST中。 $ _POST还可以包含多个值作为associative array,在这种情况下,您使用诸如$ _POST ['id']之类的键来获取值,该键表示与$ _POST中的'id'键相关联的数组索引。

你的逻辑中有几件事情不太正确,首先,不要在点击复选框时发布值,除非只有一个,你没有其他更好的方法来触发帖子。如果有几个复选框,你可以有很多,而不只是一个,所以你的第三行应该是这样的(注意数组):

$.post("ci_editor.php", [{ id: this.id, checked: this.checked }, { id: this.id2, checked: this.checked2 }] );

然后$ _POST应该是数组本身,你只需要遍历它就行了。

要处理不同数量的复选框,请尝试以下操作:

var payload = new Array();

$.each( $(":checkbox") , function( index, value ) {
   //value holds the reference of the check box
   if(value.attr('checked')){
       //Build the object with whatever values from the checkbox you require.

       payload.push( { id: value.id, checked: value.attr('checked') } )
   }
})

并使用有效负载数组作为$ .post有效内容。