未设置Ajax jQuery POST变量
问题: 我进行如下ajax调用:未设置Ajax jQuery POST变量,jquery,ajax,arrays,post,Jquery,Ajax,Arrays,Post,问题: 我进行如下ajax调用: $.ajax({ type: "POST", url: "cms/php/UploadAjax.php", data: { Images: Images }, dataType: "html", success: function (data) { console.log(data); }, error: function (data) { conso
$.ajax({
type: "POST",
url: "cms/php/UploadAjax.php",
data: {
Images: Images
},
dataType: "html",
success: function (data) {
console.log(data);
},
error: function (data) {
console.log(data);
}
});
Array
{
[0]=> Array
{
[0]=>"test1.png"
[1]=>"someDataUrl1"
}
[1]=> Array
{
[0]=>"test2.png"
[1]=>"someDataUrl2"
}
}
图像的结构如下所示:
$.ajax({
type: "POST",
url: "cms/php/UploadAjax.php",
data: {
Images: Images
},
dataType: "html",
success: function (data) {
console.log(data);
},
error: function (data) {
console.log(data);
}
});
Array
{
[0]=> Array
{
[0]=>"test1.png"
[1]=>"someDataUrl1"
}
[1]=> Array
{
[0]=>"test2.png"
[1]=>"someDataUrl2"
}
}
在我的本地服务器(Windows/EasyHP)上,我可以访问$\u POST['Images']
很好,就像
<?php
if(isset($_POST['Images']))
{
foreach($_POST['Images'] as $image)
{
////do something with $image[0], $image[1]
if (!preg_match('/data:([^;]*);base64,(.*)/', $image[0], $matches))
{
die("error");
}
// Decode the data
$content = base64_decode($matches[2]);
header('Content-Type: '.$matches[1]);
header('Content-Length: '.strlen($content)); ////Removing it resolved the issue
$imagename=utf8_decode($image[1]);
$path="../../galleryimages/".$imagename;
$mysqlpath="galleryimages/".$image[1];
file_put_contents($path,$content);
}
}
else
echo "something";
?>
如果我再加上:
contentType:"html/text"
对于我的ajax调用,除了console.log(数据)之外,我没有收到任何错误成功处理程序中的code>给了我“something”,它告诉我没有设置$\u POST['Images']
。添加了contentType
后,它既不能脱机工作,也不能联机工作
提前感谢。希望这对您有所帮助。这将把数组转换成json,php可以将其解码并用作数组
var ImageJSON = JSON.stringify(Images);
data: {
Images: ImageJSON,
}
在你发送之前
if(isset($_POST['Images']))
$Images = json_decode($_POST['Images']);
foreach($Images as $image) {
我解决了:移除
header('Content-Length: '.strlen($content));
解决了问题(另请参见我的问题)。将数据类型表单“html”更改为“json”