2014-06-22 102 views
4

我現在有一個ajax函數,它立即對輸入值做出反應。 (Change the Submit-Button with AJAX-function for instantly reacting for an input在幾個瀏覽器中添加Google TTS腳本

此功能以俄語顯示輸入數字的單詞。 現在我想從單詞添加左邊的一個播放圖標,通過單擊它來發出單詞。

我找到了Google TTS(文本到語音轉換)的解決方案,但在我的示例中,它僅適用於Google Chrome。 IE和Firefox(最新版本)不工作。

另一個問題: 1.此功能允許最大100個字符到pronunciate,所以腳本應該將裂變大輸入(> 100個字符)轉換成多個連續的請求exampel爲最大可能的數目999999999999999.

回答

1

作爲因爲ajax(正常流程)現在正在運行,所以它的實現方式與您在測試網站上的相同。考慮下面這個例子:

<form method="POST" action="index.php"> 
    <label for="zahl">Zahl:</label> <br/> 
    <input id="zahl" name="zahl" type="number" size="15" maxlength="15"><br/><br/> 
    <img src="http://lern-online.net/bilder/symbole/play.png" id="playsound" style="display: none; " /> 
    <span id="results" style="width: 400px;"></span> <!-- results appear here --> 
</form> 
<div class="player"></div> 


<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
<!-- <script src="jquery.min.js"></script> --> 
<script type="text/javascript"> 
$(document).ready(function(){ 

    $('#zahl').on('keyup', function(){ 
     var input = $(this).val(); 
     if(input != '') { 
      // ajax request server 
      $.ajax({ url: 'index.php', type: 'POST', dataType: 'text', data: {value: input}, 
       success: function(response) { 
        $('#results').text(response); // append to result div 
        $('#playsound').show(); 
       } 
      }); 
     } else { 
      $('#results').text(''); 
      $('#playsound').hide(); 
     } 

    }); 

    // add this, since it spawns new embed tags every click 
    $('#playsound').click(function(){ 
     var input = encodeURIComponent($('#results').text()); 
     $('.player').html('<audio controls="" autoplay="" name="media" hidden="true" autostart><source src="sound.php?text='+input+'" type="audio/mpeg"></audio>'); 
    }); 

}); 
</script> 

創建一個新的PHP文件,將處理的聲音請求:

說它sound.php

<?php 

$txt = $_GET['text']; 
$txt = urlencode($txt); 
header("Content-type: audio/mpeg"); 
$url ="http://translate.google.com/translate_tts?q=$txt&tl=ru&ie=UTF-8"; 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_TIMEOUT, 30); 
$audio = curl_exec($ch); 
echo $audio; 

?> 
+0

的方式,並沒有對IE瀏覽器,因爲這個測試還即時通訊使用Linux – user1978142

+0

謝謝!它只適用於谷歌瀏覽器,並有大量的問題。我已經添加了這個問題。爲什麼它現在使用jQuery 1.11.1? – Grischa

+0

@Grischa其在評論裏面的答案,有一個鏈接,你可能想檢查一下,它詳細說明發生了什麼 – user1978142