Извлеките поле из JSOn, используя собственный javascript

Может кто-нибудь помочь мне в извлечении Sring из translatedText

{
    "data":{
        "translations":[
            {
                "translatedText":"நான் Google மொழிபெயர்ப்பாளர் இருந்து JSON பதில் சோதனை"
            }
        ]
    }
}

Мой код:

<head>
<script>
var xmlHttp = null;

function GetCustomerInfo()
{
    var CustomerNumber = document.getElementById( "sourceText" ).value;
    alert(CustomerNumber);
    var myKey = 'ttes';
    var Url = "https://www.googleapis.com/language/translate/v2?key="+ myKey + "&source=en&target=ta&q=" + CustomerNumber + "&prettyprint=true"

    xmlHttp = new XMLHttpRequest(); 
    xmlHttp.onreadystatechange = ProcessRequest;
    xmlHttp.open( "GET", Url, true );
    xmlHttp.send( null );
}

function ProcessRequest() 
{
    if ( xmlHttp.readyState == 4 && xmlHttp.status == 200 || xmlHttp.status == 304) 
    {
        if ( xmlHttp.responseText == "Not found" ) 
        {
            document.getElementById( "TextBoxCustomerName"    ).value = "Not found";
            document.getElementById( "TextBoxCustomerAddress" ).value = "";
        }
        else
        {
            var info = eval ( '(' + xmlHttp.responseText + ')' );

            // No parsing necessary with JSON!        
            document.getElementById( "translatedText" ).innerHTML = info.data[0].translations[0].translatedText;
        }                    
    }
}
</script>
</head>
<body>
<input id="sourceText"/>
<button onclick="GetCustomerInfo()">Translate Me</button>
<br>
<div id="translatedText">
</div>
</body>

Но translatedText всегда пусто!


person Maheswaran Ravisankar    schedule 03.02.2014    source источник
comment
@dystroy У меня есть div с именем translatedText   -  person Maheswaran Ravisankar    schedule 03.02.2014
comment
И с этим редактированием вы сделали все ответы устаревшими. Подумайте о том, чтобы сразу же опубликовать всю соответствующую информацию и не включайте приведенные ниже решения в свой вопрос.   -  person cookie monster    schedule 03.02.2014
comment
@cookiemonster Извините, я пытался ответить на один из ответов и опубликовал ..!   -  person Maheswaran Ravisankar    schedule 03.02.2014
comment
Рассмотрим некоторые основные этапы отладки, такие как регистрация различных значений в консоли разработчика и проверка на наличие ошибок.   -  person cookie monster    schedule 03.02.2014
comment
Две вещи: 1) вам не нужен [0] после info.data... проверьте мой ответ ниже 2) убедитесь, что вы не получите это: {ошибка: {ошибки: [{домен: использование лимитов, причина: ключНедействительный, сообщение: BadRequest}], код: 400, сообщение: BadRequest}}   -  person Emilio Rodriguez    schedule 03.02.2014


Ответы (3)


попробуй это

var info = eval ( '(' + xmlHttp.responseText + ')' );

Ага, а также

info.data.translations[0]...

внутри

info.data[0].translations[0]...
person Sergey Semenov    schedule 03.02.2014
comment
Не используйте eval. eval это Зло. вместо этого используйте JSON.parse - person antyrat; 03.02.2014
comment
Бездумно повторять мантру eval is evil бесполезно. Этот ответ правильно показывает две проблемы в коде. +1 Хотя лично я бы предпочел JSON.parse в этой ситуации. - person cookie monster; 03.02.2014
comment
Это сработало, моя ошибка заключалась в доступе к data[0], как вы указали - person Maheswaran Ravisankar; 03.02.2014

Попробуйте JSON.parse:

var myObject = JSON.parse(myJSONtext);

тогда вы можете использовать myObject для получения свойств объекта.

person Saeedses    schedule 03.02.2014

person    schedule
comment
Я понял текст, но, к сожалению, не понял точного языка! - person Maheswaran Ravisankar; 03.02.2014
comment
Сработало, если я отправлю переменную JSON как таковую! Вместо строки.. - person Maheswaran Ravisankar; 03.02.2014