Не удается получить объект JSON - PullRequest
0 голосов
/ 28 марта 2011

Эй, под этим URL 1234 /? Fmt = json Я создаю объект json, подобный этому

SurveyJson = {question:$("#question").val(),choice:Choice,count:Count};
var jsonString = JSON.stringify(SurveyJson);

, и я пытаюсь получить объект json с помощью вызова AJAX

var url = "1234?fmt=json";
$.ajax({
    url: url,
    type: "get",
    dataType: 'json',
    success: function (data) { 
        $("#display").html(data);
    }
});

Почему я не могу отобразить данные?Я пытался, что если я вычеркну параметр dataType и оставлю другие неизменными, я могу каким-то образом получить строку json, чего я не знаю почему.И я не мог помочь, но заметил, что некоторые люди, у которых есть подобная проблема, помещают «post» как тип вместо «get», почему, если это правильно?спасибо

Ответы [ 2 ]

0 голосов
/ 28 марта 2011

Убедитесь, что ваш "URL-адрес обратного вызова" 1234 /? Fmt = json возвращает только json

, например, попробуйте жесткие значения кодирования и посмотрите, работает ли он, измените код по этому URL-адресу, чтобы вывести его в качестве ответа httpи удалите другие вещи.просто ответьте в точности тем, что показано в этой строке, и ничего больше.

{question:"my question",choice:"a choice",count:3}

Измените свой код вызова на:

var url = "1234?fmt=json";
 $.ajax({
    url: url,
    success: function (data) { 
        alert(data);
        alert(data.question);
    }
});

Если вы видите два поля предупреждений;первый с содержимым «[Object object]» (это немного варьируется в зависимости от браузера) и вторым предупреждением с «моим вопросом», после чего вы отправляетесь в хороший старт.Отправьте сообщение назад и дайте мне знать, и мы возьмем его оттуда.

Кроме того, установка атрибута "type" в значение "get" или "post" не имеет никакого значения для анализа текста ответа вашего httpзапрос к 1234 /? fmt = json, в допустимый объект json в браузере.Get и Post имеют важные различия, но не имеют отношения к анализу текста ответа вашего http-запроса.

0 голосов
/ 28 марта 2011

Если вы удалите dataType, то по умолчанию он вернется в виде html (который будет одной длинной строкой). Я рекомендую выводить данные в виде строки (сделав dataType 'html' или удалив его) и используя этот JSON validator , чтобы убедиться, что проблема не существует.

GET и GET определяют метод запроса. GET воспользуется строкой запроса (url). Вы хотите использовать GET, основываясь на вашем примере URL. Измените свой Ajax-вызов на этот $.ajax({ url: '1234', type: "get", data: { 'fmt': 'json' }, dataType: 'json', success: function (data) { $("#display").html(data); } });

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...