将blob变量从php发送到javascript

时间:2014-06-06 03:58:33

标签: javascript php ajax xml blob

我有一个从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和一个字符串值。

1 个答案:

答案 0 :(得分:1)

对于AjaxXMLHttpRequest,服务器响应可以是

  1. responseText - 当您返回html或任何字符串作为回复时。
  2. responseXML - 当您返回XML作为回复时。
  3. 响应 - 当您将响应作为数组缓冲区,Blob,Document,JavaScript对象(对于" json")或字符串返回时。如果请求未完成或未成功,则为null。
  4. 如果要返回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);                        
    
           }
         }