Javascript Vanilla JS Ajax和base64img问题
我正在使用一个函数对图像进行编码,该函数使用canvas元素将图像编码为base64。Javascript Vanilla JS Ajax和base64img问题,javascript,ajax,base64,Javascript,Ajax,Base64,我正在使用一个函数对图像进行编码,该函数使用canvas元素将图像编码为base64。 然后我尝试通过AJAX将Base64字符串发布到我的phpAJAX\u控制器中: function submitParticipation(name,email,phone,city) { encodeImage(uploadedImg, function(encodedImage) { uploadedImg = encodedImage; }); var aja
然后我尝试通过AJAX将Base64字符串发布到我的php
AJAX\u控制器中:
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调用,但它通过empty调用
知道为什么吗
base64Img变量定义得很好-我可以看到这一点,因为在Ajax调用的params
变量中定义它之前,我将它记录在控制台中。您的params字符串无效,因为您没有对每个值进行编码。所有这些,包括base64值,都应该包装在encodeURIComponent()
中
例如:
base64Img = encodeURIComponent(base64Img);
Base64值包括一个=
字符,该字符会破坏密钥对字符串。如果只是Base64'='破坏了该字符串,那么为什么其他参数需要这个字符?其他特殊字符(不仅仅是=
和&
)需要进行编码,以符合应用程序/x-www-form-urlencoded
标准格式。即使您相信这些值中不会有特殊字符,编码仍然是一种很好的做法。