jQuery: успешное выполнение в 1.3.2, но не в 1.4.2 - PullRequest
0 голосов
/ 04 сентября 2010

В этом нет ничего плохого, как только я изменяю библиотеку на 1.3.2, мой при успехе работает нормально? Как идет? Не появляется даже предупреждение с TEST ..

Вот код, на котором это происходит:

function crop() {
    $.ajax({
        type: "POST",
        dataType: 'json',
        url:"functions.php?action=crop",
        data: 
        {
            x: $('#x').val(),y: $('#y').val(),w: $('#w').val(),
            h: $('#h').val(),fname:$('#fname').val(),fixed:fixed,
            sizew:sizew,sizeh:sizeh},
            success: function(response)
            {
                alert('TEST');
                if(!fixed) // Missing { }
                { 
                    $("#showPhoto").css({overflow:"auto"}); // Missing ;
                }
                $("#showPhoto").html(
                    $(document.createElement("img")).attr(
                        "src",response.filename)).show();

                $("#showPhoto").after("There you go...").show();
                $("#image").slideUp();
           },
          error:function(response) {
                   console.log('error: ', response);
               }
        });
    }

Как мне заставить его работать с библиотекой jquery 1.4.2?

1 Ответ

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

Возвращение JSON недействительно, пример, который вы опубликовали:

({"filename":"images\/profilePhoto\/thumbs\/1283596240.jpg"}) 

И ответ, который я получил на странице:

({"filename":"1283597560.jpg"})

Оба недопустимы JSON, вам нужно удалить оболочку () там.Вы можете проверить свой ответ JSON на достоверность здесь: http://www.jsonlint.com/

Разница между 1.3.2 и 1.4.2 заключается в том, что в 1.4.0 jQuery добавила строгую проверку JSON, если она не действительна, то не получится (поэтомуон может лучше использовать собственные парсеры JSON браузеров).

Из заметок о выпуске 1.4 :

Строгий анализ JSON с использованием собственного JSON.parse : ( jQuery.ajax () Документация , Фиксация 1 , Фиксация 2 , Фиксация 3 )

jQuery 1.3 и более ранние версии использовали JavaScript eval для оценки входящего JSON.jQuery 1.4 использует собственный анализатор JSON, если он доступен.Он также проверяет входящий JSON на достоверность, поэтому искаженный JSON (например, {foo: "bar"}) будет отклонен jQuery в jQuery.getJSON и при указании «json» в качестве dataType запроса Ajax.

...