2010-08-06 3 views
3

Я использую следующий код, чтобы получить JSon отформатированные данные:Чтение возвращение JSON данных JQuery

$.ajax({ 
      type: "GET", 
      url: "MyService.svc/GetSomeData", 
      dataType: "text", 
      success: function (data, textStatus) { 

       alert("Test: " + data.toString()); 
      }, 
      error: function (xhr, textStatus, errorThrown) { 
       alert("Error: " + (errorThrown ? errorThrown : xhr.status)); 
      } 
     }); 

Данные успешно вернулись в этот вызов, и это выглядит следующим образом:

{"d":"test data"} 

Мое предположение было то, что я мог бы получить доступ к данным следующим образом:

var myData = data["d"]; 

Однако это, кажется, всегда возвращаются «неопределенными». Что мне не хватает, чтобы получить одну строку данных «тестовые данные»?

+0

У вас есть доступ к данным ['d'] в обратном вызове. Это то, где вы пытаетесь получить строку? – David

ответ

5

Что произойдет, если вы попробуете data.d?

+0

Это правильный ответ. – Adrian

+0

Спасибо, что сделал! –

8

Изменения dataType: "text", в dataType: "json",

Проблемы у Вас есть то, что в то время как возвращаемая строка фактически действует JSON, он возвращается к вашей функции успеха в виде строки. Строки не имеют атрибута d. Что вам нужно сделать, так это преобразовать JSON в объект javascript, который jQuery сделает для вас, если вы скажете, что вы ожидаете JSON.

0

Я думаю, что оба Sean & Thiago верны: используйте {dataType: "json"} (в ваших вариантах $ .ajax()) и получите доступ к значению с помощью data.d.

+1

данные ["d"] будут работать так же хорошо, как data.d. Свойства объекта JavaScript могут быть (и иногда должны быть) привязаны через нотацию массива. – jmar777

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