【问题标题】:jQuery to PHP - serialized stringsjQuery to PHP - 序列化字符串
【发布时间】:2012-01-09 05:19:31
【问题描述】:

我目前正在 AJAX 处理登录表单。

var data = $(this).serialize();

这是我要发送的数据,我通过 PHP 使用 Codeigniter 得到这个:

$ajax = $this->input->post('data');

这将返回您所期望的 username=john&password=doe

如何把它变成一个数组?我试过unserialize(),但我得到了空值。

【问题讨论】:

  • 可能回答你的问题here

标签: php jquery string codeigniter serialization


【解决方案1】:

相信你可以使用PHP的parse_str()函数:http://php.net/manual/en/function.parse-str.php

<?php
$str = "first=value&arr[]=foo+bar&arr[]=baz";
parse_str($str);
echo $first;  // value
echo $arr[0]; // foo bar
echo $arr[1]; // baz

parse_str($str, $output);
echo $output['first'];  // value
echo $output['arr'][0]; // foo bar
echo $output['arr'][1]; // baz

?>

使用您的代码:

parse_str($this->input->post('data'), $ajax);
echo $ajax['username'] . "/" . $ajax['password'];

【讨论】:

  • 也许再试一次,我刚刚试了演示,它按预期工作。
  • 呃,之前我的parse_str 打错字了!
【解决方案2】:

简短的答案是parse_str;

parse_str($ajax, $array);
$array === array('username'=>'john', 'password'=>'doe');

但是,发送 ajax 数据的方式有点奇怪。你为什么要序列化为一个formencoded字符串并将该字符串作为一个值发送给'data'参数?为什么不直接发送呢?然后你可以使用$this-&gt;input-&gt;post('username') === 'john' 而不需要额外的反序列化。

例如,这样做:

$.post(url, $(form).serialize());

而不是这个(你似乎正在这样做:

$.post(url, {data:$(form).serialize()});

【讨论】:

    【解决方案3】:

    【讨论】:

      【解决方案4】:
      $parameters = array();
      
      foreach ( explode( '&', $ajax ) as $parameterAndValue ) {
          list ( $parameter, $value ) = explode( '=', $parameterAndValue );
          $parameters[$parameter] = $value;
      }
      

      【讨论】:

        【解决方案5】:

        我来宾我们可以使用普通请求,它保护来自 ajax 的请求类型,使用 GET 或 POST,然后在 php 中我们可以像普通 post 一样使用,如 $_POST['username']$_GET['username'] 我们没有使用函数来反序列化,并使用 CI 进行验证,就像正常使用一样调用 $this-&gt;input-&gt;post('username'),我错了吗?

        【讨论】:

          【解决方案6】:

          如下简单使用

          <?php $username = $this->input->post('username');?>
          <?php $password= $this->input->post('password');?>
          

          你可以用上面的变量做任何事情

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2015-11-26
            • 1970-01-01
            • 2012-06-30
            • 2016-02-24
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-12-27
            相关资源
            最近更新 更多