爱学习的小朋友 2022-05-12 23:27 采纳率: 88.9%
浏览 78
已结题

js ajax传递参数给php,php返回音频

问题遇到的现象和发生背景

jq ajax把文字传递到php,合成音频后返回url到网页的audio src中。下面的代码如何修改可以实现?

<?php
header("Content-type:audio/mp3");
$text=$_POST["text"];
$tok="25.f36013a4b505d41663e17207c89f7025.315360000.1967728808.282335-26218695";
$url="http://tsn.baidu.com/text2audio?tex=".$text."&lan=zh&cuid=23488517&ctp=1&tok=".$tok."&vol=15&spd=4&per=0";
$file=file_get_contents($url);
echo $file;
?>





```html
<html>
<head>
<meta charset="utf-8" />
<meta name="applicable-device"content="pc,mobile">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>测试ajax</title>
<script src="/jquery-2.2.4.min.js" type="text/javascript"></script>

<p id="art">多年以后,奥雷连诺上校站在行刑队面前,准会想起父亲带他去参观冰块的那个遥远的下午。当时,马孔多是个二十户人家的村庄,一座座土房都盖在河岸上,河水清澈,沿着遍布石头的河床流去,河里的石头光滑、洁白,活象史前的巨蛋。这块天地还是新开辟的,许多东西都叫不出名字,不得不用手指指点点。每年三月,衣衫褴楼的吉卜赛人都要在村边搭起帐篷,在笛鼓的喧嚣声中,向马孔多的居民介绍科学家的最新发明。他们首先带来的是磁铁。</p>

<audio src="" autoplay="autoplay" controls></audio>
<script>

var text=document.getElementById('art').innerHTML;

$.ajax({
url: '/v.php',
type: 'POST',
async: true,
data: {text: text},
success: function(data){
    text=data.text;
},
error:function(){
    
    alert('朗读失败,请联系管理员修复');
}
});

</script>


</html>


```

  • 写回答

3条回答 默认 最新

  • CSDN专家-showbo 2022-05-13 12:20
    关注

    source标签应该是不支持blob协议,直接用get提交数据,然后设置source的的src或者audio标签的src就行,但是get大小请求有限制。

    img

    <?php
    $ispost=isset($_POST["text"]);
    if($ispost||isset($_GET["text"])){
    header("Content-type:audio/mp3");
    $text=$ispost?$_POST["text"]:$_GET["text"];
    $tok="25.f36013a4b505d41663e17207c89f7025.315360000.1967728808.282335-26218695";
    $url="http://tsn.baidu.com/text2audio?tex=".$text."&lan=zh&cuid=23488517&ctp=1&tok=".$tok."&vol=15&spd=4&per=0";
    $file=file_get_contents($url);
    echo $file;
    die();
    }
    ?><html>
    <head>
        <meta charset="utf-8" />
        <meta name="applicable-device" content="pc,mobile">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>测试ajax</title>
    
        <p id="art">多年以后,奥雷连诺上校站在行刑队面前,准会想起父亲带他去参观冰块的那个遥远的下午。当时,马孔多是个二十户人家的村庄,一座座土房都盖在河岸上,河水清澈,沿着遍布石头的河床流去,河里的石头光滑、洁白,活象史前的巨蛋。这块天地还是新开辟的,许多东西都叫不出名字,不得不用手指指点点。每年三月,衣衫褴楼的吉卜赛人都要在村边搭起帐篷,在笛鼓的喧嚣声中,向马孔多的居民介绍科学家的最新发明。他们首先带来的是磁铁。</p>
        <audio autoplay="autoplay" controls>
    <source id="source" src="" type="audio/mp3">
    </audio>
    
        <script>
        source.src='/v.php?text='+encodeURIComponent(art.innerText)
    
        </script>
    
    
    </html>
    
    
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月21日
  • 已采纳回答 5月13日
  • 创建了问题 5月12日

悬赏问题

  • ¥15 怎么把512还原为520格式
  • ¥15 MATLAB的动态模态分解出现错误,以CFX非定常模拟结果为快照
  • ¥15 求高通平台Softsim调试经验
  • ¥15 canal如何实现将mysql多张表(月表)采集入库到目标表中(一张表)?
  • ¥15 wpf ScrollViewer实现冻结左侧宽度w范围内的视图
  • ¥15 栅极驱动低侧烧毁MOSFET
  • ¥30 写segy数据时出错3
  • ¥100 linux下qt运行QCefView demo报错
  • ¥50 F1C100S下的红外解码IR_RX驱动问题
  • ¥20 基于matlab的航迹融合 航迹关联 航迹插补