2

文字列を取得してjsonで文字列を返す単純なphpスクリプトを作成しようとしています。

すべてのデータベースとフォームと html は、この記事に従って設定されました。 http://kunststube.net/frontback/

そして、それはうまく機能します:

  1. フォームは、ロシア語/日本語/その他で書かれたテキストを含む文字列を php に送信します。
  2. 次に、データベースで同様の文字列を見つけます。

しかし。この文字列を JSON で出力すると:

$data = array('success'=> true,'message'=>$row['phrase']);
echo json_encode($data);

それは私にこのようなものを返します{"success":true,"message":"\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u043e\u0438\u0442"}

印刷するとき

echo $row['phrase'];

ロシア語/日本語/その他の通常の文字列を返します

助言がありますか?

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\ アップデート \\\\\\\\\\\ \\\\\\\\ /////////////////////////////////////// //////////////////

私はフィールドを持っています

フィールドが変更されると、この関数が実行されます

$(document).ready(function(){

    $('#mike').bind('webkitspeechchange',function()
    {

        a= $(this).val();
        recognizeAjax(a);

})  ;
});


function recognizeAjax(string) {

    var postData ="string="+string;

    $.ajax({
        type: "POST",
        dataType: "text",
        data: postData,
        beforeSend: function(x) {
            if(x && x.overrideMimeType) {
                x.overrideMimeType("application/json;charset=UTF-8");
            }
        },
        url: 'restURL.php',
        success: function(data) {
            // 'data' is a JSON object which we can access directly.
            // Evaluate the data.success member and do something appropriate...
            if (data.success == true){
                alert(data.message);
            }
            else{
                alert(data.message+'11111');
            }
        }
    });


}

そして、ここに私のphpがあります

<?php header('Content-type: application/json; charset=utf-8');
error_reporting(E_ALL);
ini_set('display_errors', true);
// Here's the argument from the client.
$string = $_POST['string'];
$quest=1;
//$quest=$_POST['quest'];
//$event=$_POST['event'];
//$success = processDomain($string);

//!!!!!!!!!!!!! PLEASE SAY NOTHING ABOUT THE WAY I CONNECT it doesn't metter right now!!!! 
$con=mysql_connect("localhost", "*******", "*****") or die(mysql_error());
mysql_select_db("vocabulary", $con) or die(mysql_error());
mysql_set_charset('utf8', $con);


$sql="SELECT * FROM `0` WHERE event_name = 'taxi' AND quest_id = '".$quest."'";

$result = mysql_query($sql);


while($row = mysql_fetch_array($result))

{


    if ($string == htmlspecialchars($row['phrase']))
    {
       // $sql="SELECT * FROM `1` WHERE step_id = '".$row['step_id']."' AND quest_id = '".$quest."'";

       // $result = mysql_query($sql);
       // $answer = mysql_fetch_array($result);
        // Set up associative array

 $data = array('success'=> true,'message'=>$row['phrase']);
//echo $row['phrase'];
// JSON encode and send back to the server
echo json_encode($data);
        break;
    } else {
// Set up associative array
         $data = array('success'=> false,'message'=>'aint no sunshine');
         echo json_encode($data);
        break;
    }
}
mysql_close($con);

しかし、私は常にundefied11111アラートを受け取ります(javascriptによる)

だから私は新しいフィールドを作りました

<form  method="post" id="wer" action="restURL.php" accept-charset="utf-8">
    <input name="www" style="position: relative;"  lang="ru" />
    <input type="submit">
</form>

そして、文字列が収まると {"success":true,"message":"\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u043e\u0438\u0442"} が返されます。

4

1 に答える 1