JQuery AJAX вызов возврата ошибки, когда это не ошибка - PullRequest
0 голосов
/ 13 апреля 2010

Мой JS Is:

    $(InitFavorite);

function InitFavorite(){

    var jList = $(".favourite_link");
    var ids_to_check = {};//new Array();

    $.each(jList, function () {
        var id = this.id;
        var object = id.split("_");
        if (!ids_to_check[object[1]]) {
            ids_to_check[object[1]] = [];
        }
        ids_to_check[object[1]].push(object[0]);
    });

    //console.log(ids_to_check);

    $.ajax({
        type: 'POST',
        url: '/user/subscription/favourite-listing',
        data: ids_to_check,
        dataType: 'json',
         beforeSend: function(x) {
              if(x && x.overrideMimeType) {
               x.overrideMimeType("application/j-son;charset=UTF-8");
          }
         },
        error: function() {
            alert(1);
        },
        success: function() {
            alert(2);
            /*$each(returned_values, function() {
                alert('boom');
            });*/
        }
    });
}

Из вызова ajax возвращаются следующие данные:

{"env":"development","loggedIn":true,"translate":{}}{"Playlist":{"10":"Stop Recieving Updates For This Playlist"},"Clip":{"26":"Recieve Updates For This Clip","27":"Recieve Updates For This Clip","28":"Recieve Updates For This Clip","29":"Stop Recieving Updates For This Clip","30":"Recieve Updates For This Clip"}}

Однако, успех никогда не запускается, только ошибка, несмотря на то, что заголовок отсутствует и json выводится как заголовок (через Zend Framework).

Идеи

1 Ответ

4 голосов
/ 13 апреля 2010

Указанный JSON недействителен, может быть только один объект верхнего уровня, который затем должен содержать все остальное (как свойства). Подробности на сайте JSON .

{"env":"development","loggedIn":true,"translate":{}}{"Playlist"...
                                                    ^-- here's the error

Всегда полезно взглянуть на errorThrown параметр для функции ошибки. В этом случае она выдаст сообщение об ошибке из анализатора JSON («Неожиданный токен: {» в Chrome, «Ожидаемый»; «в IE,« SyntaxError: JSON.parse »в FF и т. Д.).

...