Невозможно проанализировать строку JSON

0

это мой ответ JSON от сервера: -

{
    "Details": [
        {
            "ID": 234872,
            "Name": "asdfg",
            "Address": "hasgdkjfgsjaf,asfuysdfg",
            "Email": "",
            "Mobile": "",
            "Profile": "gwekjrg ",
            "Amt": 0,
            "Date": ""
        }
    ]
}

это мой код js, который я написал для его анализа и использования в моем приложении:

function getDetail(madeUrl) {
        $.ajax({
        url: madeUrl,
        type : "GET",
        dataType : "json",
        contentType: "application/json",
        success: function(msg) {
                $("#detail tr").remove();
                var searchResponse = msg.Details;
                var html;
                $.each(searchResponse, function(index, data) {
                    html = '<tr><td>' + data.Name + '</td> <td>' + data.Amt + '</td></tr>' + data.Profile + '</td></tr>' + data.Date + '</td></tr>';
                    $("#detail").append(html);
                });
                $('#report').fadeIn();
            },
            error: function (xhr, ajaxOptions, thrownError) {
                alert("errorstatus: " + xhr.status + " ajaxoptions: " + ajaxOptions + " throwError: " + thrownError);
            },
            complete : function() {

            }
        });
}

но он выдает ошибку, как неспособную разобрать строку JSON. Невозможно выяснить причину. Любая помощь?

  • 0
    Это телефонное приложение, а не нативное
  • 0
    Вы уверены, что сервер возвращает исходные данные JSON
Показать ещё 3 комментария
Теги:
cordova

2 ответа

0

Если у вас есть сообщение unparsable JSON, это означает, что каким-то образом JSON не рассматривается как действительный JQuery.

Разумеется, я удалил бы dataType и contentType из вызова ajax (по умолчанию тип данных "Intelligent Guess", что означает, что jquery автоматически проанализирует JSon, если он обнаружит его или отправит текст в противном случае) и добавьте следующую строку в начале функции успеха:

alert(msg === Object(msg)?"json received:\n"+JSON.stringify(msg):"text received:\n"+msg);
  • 0
    он возвращает полный HTML-файл в оповещении, а не ответили данные
  • 0
    когда я удаляю dataType из кода, он выдает другую ошибку, такую как: TypeError: Результат выражения 'e' [undefined] не является объектом
Показать ещё 4 комментария
0

Попробуйте этот код. Он отлично работает для меня. Надеюсь, это будет полезно для вас. Пожалуйста, дайте мне знать. Благодарю.

Html:

<div id="detail"></div>

Автор сценария:

var j ='{"Details": [{"ID": "234872","Name": "asdfg","Address": "hasgdkjfgsjaf,asfuysdfg","Email": "","Mobile": "","Profile": "gwekjrg ","Date": ""}]}';

var json = $.parseJSON(j).Details;
$(json).each(function(i,val){
    $.each(val,function(k,v){
    console.log(k+" : "+ v); 
    $("#detail").append(k+" : "+ v + " <br />");
});
});

Демо-URL:

демонстрация

  • 0
    он получает json с сервера, и json должен автоматически оцениваться функцией jquery.get, поэтому здесь нет необходимости в parseJSON.
  • 0
    @ QuickFix, вы правы вместо разбора, в методе успеха у вас есть JSON результат. Таким образом, вы просто вызываете результат json переменной json. Это будет работать..
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню