Где результаты JSON от моего вызова jQuery AJAX POST? - PullRequest
0 голосов
/ 02 сентября 2010

У меня есть этот код настройки на веб-странице.

    <div id="gridResults">
</div>

<script type="text/ecmascript">
    jQuery.ajax({
        url: "http://localhost:6002/AggregateServices.svc/incident/10",
        type: "POST",
        async: true,
        success:
                function(json) {
                    var table = jQuery('<table />').attr('cellspacing', 0).attr('cellpadding', 4);
                    var header = jQuery('<tr />')
                        .append('<td>Case Number</td>')
                        .append('<td>Company</td>')
                        .append('<td>Created</td>')
                        .append('<td>Description</td>')
                        .append('<td>Stamp</td>')
                        .append('<td>Status</td>')
                        .append('<td>Type</td>');
                    table.append(header);
                    var row = jQuery('<tr/>')
                        .append('<td>' + json.CaseNumber + '</td>')
                        .append('<td>' + json.Company + '</td>')
                        .append('<td>' + json.Created + '</td>')
                        .append('<td>' + json.Description + '</td>')
                        .append('<td>' + json.Stamp + '</td>')
                        .append('<td>' + json.Status + '</td>')
                        .append('<td>' + json.Type + '</td>');
                    table.append(row);
                    jQuery('#gridResults').append(table).show();
                },
        error: function() { alert('An error occurred!'); }
    });
</script>

Когда я запускаю код, я получаю этот результат.

Простой пример AJAX с jQuery.

Номер дела Компания создана Описание Тип статуса штампа не определено не определено не определено не определено не определено не определено не определено

Я проверил через Fiddler 2, используя POST, чтобы убедиться, что я что-то получаю обратно. Результаты, которые я вижу, возвращаясь с Fiddler, следующие:

{"CaseNumber": "2", "Company": "company", "Created": "01.09.2010 18:31:45 PM", "Description": "Некоторое описание идет здесь.", "Штамп": "/ Дата (-62135568000000-0800) /", "Статус": "Stat", "Тип": "Тип"}

Так это выглядит как хороший JSON? Кто-нибудь есть идеи, почему это не анализ? Или я что-то упускаю?

УСТРАНЕНИЕ НЕИСПРАВНОСТЕЙ ТАК ДАЛЬШЕ:

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

jQuery.each(json, function() {
var row = jQuery('<tr/>')
    .append('<td>' + this.CaseNumber + '</td>')
    .append('<td>' + this.Company + '</td>')
    .append('<td>' + this.Created + '</td>')
    .append('<td>' + this.Description + '</td>')
    .append('<td>' + this.Stamp + '</td>')
    .append('<td>' + this.Status + '</td>')
    .append('<td>' + this.Type + '</td>');
table.append(row);});  

Ответы [ 5 ]

3 голосов
/ 02 сентября 2010

Вы должны указать jQuery для анализа результата в формате JSON, добавив dataType: 'json' к ajax параметрам.

1 голос
/ 02 сентября 2010

вы пытались использовать json.d или json.data?

0 голосов
/ 07 сентября 2010

После борьбы с кодом я понял, что сделал неправильно. Это было в двух разных проектах, WCF и ASP.NET MVC Project с jQuery, вызывающим сервисы. Оба проекта использовали Cassinni, что по сути и стало причиной возникновения настоящей проблемы. У меня был проект WCF на одном порту и ASP.NET MVC на другом порту, но оба работали с локального хоста. Это приводит к той же самой проблеме происхождения . Я снова настраиваю все решение в одном проекте (потому что у меня жесткая голова и я НЕ хочу устанавливать и запускать IIS, чтобы удалить Cassinni как проблему). Я изложил здесь все мое решение , связав все это вместе .

Итак, подведем итог: приведенный выше код на самом деле правильный и действительно работает. Однако порты дают сбой в любом совместимом с безопасностью браузере (другими словами, не в браузерах IE). Кажется, что IE любит игнорировать ту же самую проблему происхождения, оставляя это как серьезную проблему безопасности с этим браузером. : /

0 голосов
/ 02 сентября 2010

У вашего возвращенного объекта есть имя?

Так вы делаете MyObj obj = new MyObj();, затем устанавливаете свойства и затем возвращаете этот объект?

Если это так, вам нужно также включить MyObj в ваш объект, так что я думаю, непроверенный, json.d.MyObj или просто json.MyObj.propertyName;

0 голосов
/ 02 сентября 2010

jQuery обычно не отправляет данные json в качестве параметра функции, когда выполняется вызов ajax, и, если он его отправляет, это просто строковый код, который вам нужно проверить Попробуйте любую из этих идей:

1- до

var j = eval(json);

и вместо

.append('<td>' + json.Company + '</td>')

сделать

.append('<td>' + j.Company + '</td>')

или используйте

jQuery.getScript()

вместо jQuery.Ajax()

мне больше нравится второй, так как я использую

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