jQuery:在1.3.2中运行成功但在1.4.2中没有运行

时间:2010-09-03 22:32:03

标签: jquery jquery-1.3 jquery-1.4

没有什么不对,只要我将lib改为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 个答案:

答案 0 :(得分:1)

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解析器)。

From the 1.4 release notes

  

严格的JSON解析,使用原生JSON.parse :( jQuery.ajax() DocumentationCommit 1Commit 2Commit 3

     

jQuery 1.3及更早版本使用JavaScript的eval来评估传入的JSON。 jQuery 1.4使用本机JSON解析器(如果可用)。它还验证传入的JSON的有效性,因此,jQuery.getJSON中的jQuery以及将“json”指定为Ajax请求的dataType时,将拒绝格式错误的JSON(例如{foo: "bar"})。