使用AJAX检索PHP文件中的序列化数据

使用AJAX检索PHP文件中的序列化数据,php,ajax,jquery,Php,Ajax,Jquery,发送AJAX代码的表单: var str = $("form").serialize(); alert(str); // var uns=@unserialize(str); //alert(uns); $.ajax({ type: "POST", url: "update.php", data: "box1="+str, success: function(value) { $("#data").html(value); }

发送AJAX代码的表单:

var str = $("form").serialize();
alert(str);
// var uns=@unserialize(str);
//alert(uns);
$.ajax({
    type: "POST",
    url: "update.php",
    data: "box1="+str,
    success: function(value)
    {
        $("#data").html(value);  
    }
HTML格式:

<form>
  <input type=checkbox name=box[] value='1'/><input type=checkbox name=box[] value='2'/>
</form>  
如何在PHP端访问每个box变量值?

$box=$\u POST['box']; $box是一个数组。

更改

data: "box1="+str,
进入


serialize()
将生成如下字符串:
input1=value1&input2=value2
。因此,在php中,您可以使用访问每个值,例如
$value1=$\uPHP['input1']

php中的数据将包含如下字符串

field1=value1&field2=value2&..


因此,您可以使用
$\u POST['field1]
获取值1,使用
$\u POST['field2']

获取值2。您的js应该如下所示:

var str = $("form").serializeArray();
$.ajax({  
    type: "POST",  
    url: "update.php",  
    data: str,  
    success: function(value) {  
            $("#data").html(value);
    }
});
使用php,您应该循环结果数组

$box = $_POST['box'];
foreach ($box as $x) {
    echo $x;
}
编辑:
您必须在jQuery中使用serializeArray函数。然后,它将与此代码一起工作。

前提是您的服务器正在接收类似以下内容的字符串

values=$("#edituser_form").serialize();//alert(values);
    $.ajax({
        url: 'ajax/ajax_call.php',
        type: 'POST',
        dataType:"json",
        data: values,
        success: function(){
            alert("success");
        },
        error: function(){
            alert("failure");
        }
    });
    $("form").serialize();
   "param1=someVal&param2=someOtherVal"
…像这样的东西可能就是你所需要的:

    $params = array();
    parse_str($_GET, $params);
$params应该是一个按预期方式建模的数组。注意,这也适用于HTML数组

有关更多信息,请参见以下内容:


希望这会有帮助。祝你好运

你的JS应该是这样的-

var str = $( "form" ).serializeArray();
    var postData = new FormData();
     $.each(str, function(i, val) {
                postData.append(val.name, val.value);
 });
$.ajax({
           type: "POST",
           data: postData,
           url: action,
           cache: false,
           contentType: false,
           processData: false,
           success: function(data){
              alert(data);
          }
    });
现在在php脚本中执行此操作-

print_r($_POST);

您将在警报框中获取所有表单数据。

我按照您的建议进行了更改,但它给了我以下错误消息:警告:为$\u POST中的foreach()提供的无效参数也是一个数组,因此您的答案是多余的。我想知道你打算用
$box
做什么?你是在暗示什么吗?解释一下解决办法会对大家都有帮助。
$data = array();
foreach(explode('&', $_POST[data]) as $value)
{
    $value1 = explode('=', $value);
    $data[$value1[0]] = validateInput($value1[1]);
}

var_dump($data['box']);
print_r($_POST);
$data = array();
foreach(explode('&', $_POST[data]) as $value)
{
    $value1 = explode('=', $value);
    $data[$value1[0]] = validateInput($value1[1]);
}

var_dump($data['box']);