2017-01-25 25 views
0

私は初心者ですので、経験があまりありません。 タスクは、ユーザーが書き込むテキストのブロックを翻訳することです。 だから、HTMLファイル:未知のSyntaxError:無効または予期しないトークン。 Google API翻訳

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

ロード最初の文の後で予期しないトークンが変数$ text_without_advにあり、変換できない場合、ボタンをクリックすると何も起こりません。例えば

var text_var = JSON.stringify(」 しかし、彼女は恋人を持っていた、と彼はボールを行くとなるだろうと述べた /// トークン ///そこで彼は、公園に行ってきました。彼はヘッジを登ってヘッジの頂点に着いた時、老婆が彼の前に堤防から立ち上がり、ボールを手に入れたいなら眠らなければならないと言った家の中の3泊。彼はそう言った。 ");

しかし、主な質問は、他のユーザーからの他の投稿テキストにエラーがないことです。私は理解できません、3つの異なるユーザーからの3つの異なるテキストは予期しないトークンを持っています、そして、次の2つはエラーがなく、次のものはエラーを持っています。どこに問題がありますか?

+0

あなたはJSONは、その後、あなたのPHPコードを作りたい場合は、JSONを送信する - 現在、あなたはJSON –

+0

が、これはPHPの変数 '$ text_without_adv'あるではないことが保証さ... json_decode''でしょうか? – Beginner

+0

@Beginner '$ text_without_adv'はい、それはPHPファイル –

答えて

0

この場合、あなたの代わりにJSONを渡す必要はありませんだけで、その後

最初の変更このライン

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

ことを行うにはpostデータ

を渡しますあなたのアヤックス

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

とあなたのphpで

代わり

$text = $_POST['text']; 

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

の変化のように、あなたのコードは、この

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> 
ようになります3210

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サービスは利用できません**フォームデータ: 'テキスト:<?php echo $ text_without_adv; ?> ' –

+0

あなたはそれをスクリーンショットできます – Beginner

+0

どの部分のスクリーンショットですか?フォームデータまたはステータスコードまたは他の何か? –

関連する問題