我目前正在AJAX登錄表單。jQuery到PHP - 序列化字符串
var data = $(this).serialize();
這是我送的數據,我得到這個用笨象這樣PHP:
$ajax = $this->input->post('data');
這將返回username=john&password=doe
如你所期望。
如何將其轉換爲數組?我試過做unserialize()
,我得到空。
我目前正在AJAX登錄表單。jQuery到PHP - 序列化字符串
var data = $(this).serialize();
這是我送的數據,我得到這個用笨象這樣PHP:
$ajax = $this->input->post('data');
這將返回username=john&password=doe
如你所期望。
如何將其轉換爲數組?我試過做unserialize()
,我得到空。
我相信你可以使用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()
$parameters = array();
foreach (explode('&', $ajax) as $parameterAndValue) {
list ($parameter, $value) = explode('=', $parameterAndValue);
$parameters[$parameter] = $value;
}
簡短回答是parse_str
;
parse_str($ajax, $array);
$array === array('username'=>'john', 'password'=>'doe');
但是,您發送ajax數據的方式有點奇怪。爲什麼要序列化爲一個經過編碼的字符串並將該字符串作爲「數據」參數的值發送?你爲什麼不直接發送它?那麼你可以使用$this->input->post('username') === 'john'
而不需要額外的反序列化。
例如,做到這一點:
$.post(url, $(form).serialize());
,而不是這個(你似乎在做:
$.post(url, {data:$(form).serialize()});
我客人,我們可以使用普通的請求,這是保衛從請求類型ajax,使用GET或POST,然後在PHP中,我們可以像使用普通帖子一樣使用,比如$_POST['username']
或$_GET['username']
我們不必使用函數來反序列化,並且使用CI進行驗證就像正常使用一樣調用,$this->input->post('username')
,我是錯了?
只需使用如下
<?php $username = $this->input->post('username');?>
<?php $password= $this->input->post('password');?>
你可以用上述變量做任何事情
您的問題[這裏](http://stackoverflow.com/a/3817220/388053) –