我正在使用一个使用canvas元素将图像编码为base64的函数对图像进行编码
然后我尝试通过AJAX将Base64字符串发布到我的php ajax_controller
:
function submitParticipation(name,email,phone,city) {
encodeImage(uploadedImg, function(encodedImage) {
uploadedImg = encodedImage;
});
var ajax = new XMLHttpRequest();
var params = 'uid='+ facebookUserId + '&name=' + name + '&email=' + email +
'&phone=' + phone + '&city=' + city + '&img_string=' + base64Img +
'&facebook_name=' + facebookUserFullName + '&facebook_pic=' +
facebookProfilePic + '&facebook_email=' + facebookUserEmail;
ajax.open("POST", "main_ajax_controller.php?m=store_participation", true);
ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
ajax.send(params);
ajax.onreadystatechange = function() {
if (ajax.readyState == 4 && ajax.status == 200) {
var response = ajax.responseText;
} //If an error occur during the ajax call.
if (ajax.readyState == 4 && ajax.status == 404) {
}
}
}
base64Img
虽然没有通过AJAX调用 - 它会通过空。
知道为什么吗?
base64Img变量定义得很好 - 我可以看到这个,因为我在Ajax调用的params
变量中定义它之前就在控制台中记录它。
答案 0 :(得分:1)
您的params字符串无效,因为您没有对每个值进行编码。所有这些,包括base64值都应该包含在encodeURIComponent()
。
例如:
base64Img = encodeURIComponent(base64Img);
Base64值包含一个=
字符,它打破了密钥对字符串。