我有一个从sql数据库获取音频blob的php文件。我需要使用JavaScript将该blob发送到html页面。
下面是我发送blob变量$ ubr。
的PHP代码echo json_encode(array('first'=>$ubr));
以下是我尝试接收blob的JavaScript。
var url = "testThis.php"
var ajax = new XMLHttpRequest();
ajax.open("GET", url, true);
//ajax.send(null);
ajax.onreadystatechange = function () {
if (ajax.readyState == 4 && (ajax.status == 200)) {
var Data = JSON.parse(ajax.responseText);
var b64Data = Data.first;
}
}
我认为这是因为我将它视为字符串,但Blob是二进制数据。除了我不确定还能做什么。
我需要将php数据保存为数组。我需要同时发送一个blob和一个字符串值。
答案 0 :(得分:1)
对于AjaxXMLHttpRequest,服务器响应可以是
如果要返回HTML作为响应 ex.PHP代码:
$data['blob']="blob_value";
return "<div id='blob'>".$data['blob']."</div><div id='string'>".$data['string']."</div>"; // returning HTML as response .
然后你可以使用responseText
ajax.onreadystatechange = function () {
if (ajax.readyState == 4 && (ajax.status == 200)) {
document.getElementById("target").innerHTML =(ajax.responseText);
}
}
在你的情况下返回数组
PHP代码可以是:
$data['blob']="blob_value";
$data['name']="name_value";
// returning json data ==> {"blob": "blob_value","name": "name_value"}
return json_encode($data);
JavaScript中的:
ajax.onreadystatechange = function () {
if (ajax.readyState == 4 && (ajax.status == 200)) {
var data= ajax.response;
var arr= JSON.parse(data);
alert(arr.blob);
}
}