2017-01-25 16 views
0

Я начинаю, поэтому у меня не так много опыта. Задача состоит в том, чтобы перевести блоки текста, которые пользователь пишет. Так HTML-файл:Uncaught SyntaxError: Недействительный или неожиданный токен. 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-файл "gTApi.php" (где происходит волшебство):

<?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']; 

другой PHP-файл:

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

после страницы load Я получаю неожиданный токен после первого предложения в переменной $ text_without_adv и не может выполнить перевод, ничего не происходит, когда я нажимаю кнопку.

. Например:

var text_var = JSON.stringifyНо она была возлюбленная, и он сказал, что пойдет и получить мяч /// лексема /// Так что он пошел в парк ворота, но он закрылся, поэтому он взобрался на изгородь, и, когда он добрался до верхушки изгороди, старуха поднялась из дамбы перед ним и сказала: если он хочет получить мяч, он должен спать три ночи в доме. Он сказал, что будет. ");

Но главный вопрос заключается в том, что в других опубликованных текстах от других пользователей ошибок нет. Я не понимаю, 3 разных текста у 3-х разных пользователей имеют неожиданный токен, а затем следующие 2 не имеют ошибки, затем следующий имеет ошибку и так далее. Где может быть проблема?

+0

если вы хотите JSON, а затем сделать свой код PHP отправить JSON - в настоящее время вы используете 'json_decode' ... гарантированно не JSON –

+0

это ваш PHP переменная' $ text_without_adv'? – Beginner

+0

@Beginner '$ text_without_adv' да, он назначается в файле php –

ответ

0

В этом случае вам не нужно передать JSON вместо этого просто сдать экзамен по post данные

Чтобы сделать это

Первое изменение этой линии

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

затем

в ваш ajax

$.ajax({ 
    method: 'post', 
    url: own_script, 
    data: { 
     // just use the declared js variable above which contains your php variable at the first place 
     text: text_var 
    } 
}).done(function(data) { 
    console.log(data);  
}); 

и в РНР

вместо

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

изменение

$text = $_POST['text']; 

так что ваш код будет так

JS

<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

Я получаю ** Код состояния: 503 Услуга недоступна ** Данные формы: 'text: ' –

+0

можете ли вы сделать снимок? – Beginner

+0

снимок экрана о том, какая часть вам нужна? Форма данных или код состояния или что-то еще? –

 Смежные вопросы

  • Нет связанных вопросов^_^