Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将blob变量从php发送到javascript_Javascript_Php_Ajax_Xml_Blob - Fatal编程技术网

将blob变量从php发送到javascript

将blob变量从php发送到javascript,javascript,php,ajax,xml,blob,Javascript,Php,Ajax,Xml,Blob,我有一个php文件,它从sql数据库中获取一个音频blob。我需要用JavaScript将该blob发送到html页面 下面是我发送blob变量$ubr的PHP代码 echo json_encode(array('first'=>$ubr)); 下面是我的JavaScript,在这里我尝试接收blob var url = "testThis.php" var ajax = new XMLHttpRequest(); ajax.open("GET", url, true); //ajax

我有一个php文件,它从sql数据库中获取一个音频blob。我需要用JavaScript将该blob发送到html页面

下面是我发送blob变量$ubr的PHP代码

echo json_encode(array('first'=>$ubr));
下面是我的JavaScript,在这里我尝试接收blob

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

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

  • responseText-返回html或任何字符串作为响应时
  • responseXML—返回XML作为响应时
  • 响应-当您以数组缓冲区、Blob、文档、JavaScript对象(表示“json”)或字符串的形式返回响应时。如果请求未完成或未成功,则为null
  • 如果您返回HTML作为响应 PHP代码:

        $data['blob']="blob_value";
    
       return "<div id='blob'>".$data['blob']."</div><div id='string'>".$data['string']."</div>"; // returning HTML as response .
    
    }

    在您返回数组的情况下

    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);                        
    
           }
         }
    

    您需要发送的字符串值是多少?可能以二进制文件的形式发送音频,字符串信息存在于HTTP头中。不过,我需要返回一个数组,而不仅仅是一个字符串。您还说“您可以使用响应文本”来表示这两种类型,其中一种应该说responseXml吗?@Silz:您忘记了
    xhr.response
    ,它基本上可以是任何类型的。即使是二进制的。@Bergi:非常感谢您的帮助:)@SolidCloudinc:已经更新了我的答案,您可以检查一下。@Silz我仍然得到未捕获的语法错误,var arr=JSON.parse(数据)上意外的标记d;
       ajax.onreadystatechange = function () {
    
          if (ajax.readyState == 4 && (ajax.status == 200)) {
             var data= ajax.response;
             var arr= JSON.parse(data);
         alert(arr.blob);                        
    
           }
         }