gpt4 book ai didi

反序列化 jQuery 序列化表单时 PHP 反序列化错误

转载 作者:行者123 更新时间:2023-12-01 07:21:54 25 4
gpt4 key购买 nike

Possible Duplicate:
What to do with php after jquery .serialize()

我使用 jQuery 序列化以下表单,使用 ajax 将其发送到服务器并使用 PHP 反序列化。

当我反序列化时,出现错误:

Error at offset 0 of 39 bytes

<form  id="Marriage" style="display: none">
<input type="text" name="city" class="txtt" value="city"/>
<input type='button' value='Apply' id="msendsend" class="sendaf" name="jobforming"/>
</form>

这是发送此表单的 jquery 函数

  $(document).ready(function () {
$('#msendsend').click(function () {
var id=getParam('ID');
$.ajax({
type:'POST',
url:"send.php",

data:{option:'apply', sr:$("form").serialize()},
success:function (jd) {
}
});
});
});

这是服务器代码:

 if($_REQUEST['option']=='catapply') {
$sc=$_POST['sr'];
mysql_query("insert into user_data(uid,data) values('$session->userid','$sc')");
}

这里我正在反序列化。

 $sql = mysql_query("SELECT * from user_data");
while ($row = mysql_fetch_array($sql)) {
$un = unserialize($row['data']);

$city=$un['city'];
echo $city;
}

数据库中的数据显示为

to=&select_category=25&msg=&city=laho

最佳答案

jQuery 的序列化函数与 PHP 的有很大不同。它创建一个查询字符串,正如您在数据库中看到的那样。
此格式可以在 PHP 中使用 parse_str function 进行解码。 。使用它而不是反序列化。

不过,您最好将表单数据作为查询字符串发布,而不是手动解析它:

data: $("form").serialize(), 

您可以添加隐藏字段来传达 option=apply 值。

这样,您就不必解码任何内容(它已经在 $_POST 中),并且您可以将每个值插入单独的行中。它会为你在未来省去很多麻烦,例如当有更多数据并且您需要搜索时。

关于反序列化 jQuery 序列化表单时 PHP 反序列化错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12768556/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com