如何在以下场景中访问PHP文件中的序列化数据?

时间:2013-10-11 14:15:52

标签: javascript php jquery serialization

如何在以下情况下访问PHP文件中的序列化数据? 代码和序列化数据如下:

$(document).ready(function() { $(document).on('click', '#delete_url', function (e) {    
e.preventDefault();

var items = new Array();
$("input:checked:not(#ckbCheckAll)").each(function() {
  items.push($(this).val());
});

var str = $("#user_filter").serialize();    


$.ajax({
  type: "POST",
  url: "manage_users.php?op=delete_bulk_users&items="+items,
  data: str,
  dataType: 'json',  
  success: function(data) {
    //var message       = data.success_message;            
    var redirect_link = data.href;
    alert(redirect_link);
      window.location.href = redirect_link;
  }          
});

});     });

我在str中序列化后收到的数据如下:

op=group_filter&page=1&from_date=11%2F10%2F2000&social_login=&to_date=11%2F10%2F2013&login_criteria=all&user_name=&user_state=&user_email_id=&user_city=

现在PHP文件(manage_users.php)如下:

/*The code is actually one of the switch casees*/
prepare_request();
  $request = empty( $_GET ) ? $_POST : $_GET ;
$op         = $request['op'];
switch( $op ) {
case "delete_bulk_users":
print_r($request);/*For printing the received array of values after form submission
                    Here I'm not getting serialized data */
}

提前致谢。

1 个答案:

答案 0 :(得分:0)

serialize函数旨在用于从输入集合(或整个表单)为URL创建查询字符串,并且必然会编码/等字符(表示URL中的目录。没有办法告诉.serialize()转换为“正确”的格式,因为它已经是

如果您使用.serialize()的结果作为AJAX请求的一部分,可以这样做:

$.ajax({
    url: 'yourpage.php',
    data: str, // the string returned by calling .serialize()
    ... // other options go here
}).done(function(response) {
    // do something with the response
});

您的服务器应该在收到请求时处理这些字符的解码,并为您提供正确的值。

如果您将其用于其他内容,则可以尝试使用原生JavaScript decodeURIComponent函数将这些编码字符转换回来,如下所示:

str = decodeURIComponent(str);

请注意,调用decodeURIComponent然后尝试将其用于AJAX请求将不会工作。

有关URI编码的更多信息,请阅读encodeURIComponent的MDN条目。