使用Uploadifive上传图片时,如何直接获取form_userid的POST值?
解决方案
嘿,我来帮你搞定这个问题!你现在遇到的是序列化表单字符串的提取问题,有两种很实用的解决思路,看你需求选:
思路1:前端直接传递单独的用户ID(推荐)
既然你只需要form_userid的数值,完全没必要把整个序列化的表单字符串传过去,直接在formData里单独传这个值就行,这样后端拿起来更直接:
修改你的JavaScript代码里的formData部分:
'formData' : { 'timestamp' : '<?php echo $timestamp;?>', 'token' : '<?php echo md5('unique_salt' . $timestamp);?>', 'form_userid' : $('#form_userid').val() // 直接传用户ID的数值 }
然后在后端uploadifive.php里,直接用$_POST['form_userid']就能拿到13647,简单高效,还避免了字符串解析的麻烦。
思路2:后端解析序列化字符串(如果必须传formInput)
如果你因为某些原因一定要传整个formInput序列化字符串,那可以用PHP的专门函数来解析:
方法A:用parse_str()(通用推荐)
这个函数可以把URL编码的字符串直接解析成关联数组,不管后面加多少参数都能处理:
// 把formInput字符串解析到$data数组里 parse_str($_POST['formInput'], $data); // 直接取form_userid的值 $user_id = $data['form_userid']; // 结果就是13647
方法B:用explode()分割字符串(仅适用于单一参数的情况)
如果确定formInput里只有form_userid这一个参数,也可以用字符串分割:
// 用等号分割字符串 $parts = explode('=', $_POST['formInput']); // 取分割后的第二个元素就是数值 $user_id = $parts[1]; // 得到13647
⚠️ 注意:如果以后表单加了其他字段,这个方法就会失效,所以还是parse_str()更靠谱。
内容的提问来源于stack exchange,提问作者Rick A.
相关产品推荐
相关产品推荐

