我正在使用这个jQuery代码向PHP发送数据:
var fromdata2 = $('#form').serialize();
var file_data = $('#fileid').attr('files')[0];
var fromdata = new FormData();
fromdata.append('fileid', file_data);
fromdata.append('post_data', fromdata2);
$.ajax({
type: "POST",
cache: false,
contentType: false,
processData: false,
data: fromdata,
dataType: "json",
url: "url",
success: function (data)
{
alert("success");
}
});
我收到以下表格中的数据:
code=&id=&CTR_ID=&ctr_name=asdsadsad&air_name=Action+Airlines&air_uniCode=XQ&ctr_strDate=04%2F11%2F2017&ctr_endDate=04%2F11%2F2017&ctr_docNameHid=5337XXXXXXXXXX78_09-06-2016&recstatus_val=1
但当我尝试使用此代码处理它时:
var_dump(unserialize($data));
我收到此错误:
unserialize(): Error at offset 0 of 537 bytes.
如何反序列化它,在数组中查找结果,如下所示:
array(
code=>,
id=>,
CTR_ID=>,
ctr_name=>'asdsadsad'
)
答案 0 :(得分:1)
正如@apokryfos在评论中所说,您可以使用parse_str
来解析查询字符串,如下所示:
$queryString = "code=&id=&CTR_ID=&ctr_name=asdsadsad&air_name=Action+Airlines&air_uniCode=XQ&ctr_strDate=04%2F11%2F2017&ctr_endDate=04%2F11%2F2017&ctr_docNameHid=5337XXXXXXXXXX78_09-06-2016&recstatus_val=1";
parse_str($queryString, $queryArray);
print_r($queryArray);
上传多个文件:
var ins = document.getElementById('fileid').files.length;
for (var x = 0; x < ins; x++) {
fromdata.append("fileid[]", document.getElementById('fileid').files[x]);
}
答案 1 :(得分:0)
您正在尝试发送JSON数据,但是您可以使用url编码数据来表示,这是两个不同的事情。如果您想发送JSON,请执行以下操作:
var form_data = $("#form").serializeArray()
form_data.push({fileid: $('#fileid').attr('files')[0]});
$.ajax({
type: "POST",
cache: false,
contentType: false,
processData: false,
data: fromdata,
dataType: "json",
url: "url",
success: function (data)
{
alert("success");
}
});
然后在PHP方面做json_decode(file_get_contents('php://stdin'), true);