2017-01-25 4 views
0

Ich bin der Anfänger, also habe nicht viel Erfahrung. Die Aufgabe besteht darin, die vom Benutzer geschriebenen Textblöcke zu übersetzen. So html-Datei:Uncaught SyntaxError: Ungültiges oder unerwartetes Token. Google API Translate

<script type="text/javascript"> 

$('#some_id').on('click', function(){ 
    var text_var = JSON.stringify("{$text_without_adv}"); 
    var own_script = 'gTApi.php'; 

    $.ajax({ 
     method: 'post', 
     url: own_script, 
     data: $.parseJSON(text_var) 
    }).done(function(data) { 
     console.log(data);  
    }); 
}); 
</script> 

php-Datei "gTApi.php" (wo die Magie passiert):

<?php 
    require_once "../../vendor/autoload.php"; 

    use GuzzleHttp\Client; 
    use GuzzleHttp\Exception\RequestException; 

    $text = file_get_contents('php://input'); 
    $apKey = '**************************'; 

    $client = new Client(
    array(
     'headers' => array(
      'Accept' => 'application/json' 
      ) 
     ) 
    ); 
    try { 
     $response =$client->get('https://translation.googleapis.com/language/translate/v2?key=' 
     . $apKey 
     . '&source=en&target=es&q=' . $text); 

    } catch (\Exception $e) { 
     echo $e->getMessage(); 
    } 
$response_body = json_decode($response->getBody(), true); 
echo $response_body['data']['translations'][0]['translatedText']; 

andere php-Datei:

$smarty->assign('text_without_adv', htmlspecialchars((implode(' ', $text_array)))); 

nach der Seite Lasten bekomme ich unerwartete Token nach dem ersten Satz in der Variablen $ text_without_adv und kann die Übersetzung nicht tun, passiert nichts, wenn ich auf die Schaltfläche klicken.

. Zum Beispiel:

var text_var = JSON.stringify (“ Aber sie einen Schatz hatte, und er sagte, er würde den Ball gehen und /// Token /// So ist er in den Park ging Tor, aber er schloss sich, und so stieg er auf die Hecke, und als er oben auf der Hecke stand, stand eine alte Frau vor ihm auf und sagte: Wenn er den Ball holen wollte, muß er schlafen drei Nächte im Haus. Er sagte, er würde. ");

Aber die Hauptfrage ist, dass es keine Fehler in anderen gebuchten Texten von anderen Benutzern geben kann. Ich kann nicht verstehen, 3 verschiedene Texte von 3 verschiedenen Benutzern haben unerwartete Token, dann die nächsten 2 haben keinen Fehler, dann hat der nächste den Fehler und so weiter. Wo könnte das Problem sein?

+0

wenn Sie JSON wollen, dann Ihre PHP-Code JSON machen senden - zur Zeit verwenden Sie 'json_decode' ... garantiert nicht als JSON –

+0

diese Variable Ihre PHP ist' $ text_without_adv'? – Beginner

+0

@Beginner '$ text_without_adv' ja, es ist in PHP-Datei zugewiesen –

Antwort

0

In diesem Fall Sie kein json geben müssen stattdessen passieren nur ein post Daten

Um das zu tun

Erste Änderung dieser Linie

// to stored your php variable in a js variable 
var text_var = "<?php echo $text_without_adv; ?>"; 

dann

in Ihr Ajax

und in Ihrer PHP

statt

$text = file_get_contents('php://input'); 

Änderung

$text = $_POST['text']; 

so würde der Code wie folgt

JS sein

<script type="text/javascript"> 

$('#some_id').on('click', function(){ 
    var text_var = "<?php echo $text_without_adv; ?>"; 
    var own_script = 'gTApi.php'; 

    $.ajax({ 
     method: 'post', 
     url: own_script, 
     data: { 
      text: text_var 
     } 
    }).done(function(data) { 
     console.log(data);  
    }); 
}); 
</script> 

PHP

<?php 
    require_once "../../vendor/autoload.php"; 

    use GuzzleHttp\Client; 
    use GuzzleHttp\Exception\RequestException; 

    $text = $_POST['text']; 
    $apKey = '**************************'; 

    $client = new Client(
    array(
     'headers' => array(
      'Accept' => 'application/json' 
      ) 
     ) 
    ); 
    try { 
     $response =$client->get('https://translation.googleapis.com/language/translate/v2?key=' 
     . $apKey 
     . '&source=en&target=es&q=' . $text); 

    } catch (\Exception $e) { 
     echo $e->getMessage(); 
    } 
$response_body = json_decode($response->getBody(), true); 
echo $response_body['data']['translations'][0]['translatedText']; 
+0

Ich bekomme ** Statuscode: 503 Service nicht verfügbar ** Formulardaten: 'text:

+0

können Sie es Screenshot – Beginner

+0

screenshot von welchem ​​Teil brauchen Sie? Formular Daten oder Status Code oder etw sonst? –

Verwandte Themen