从JQuery 1.4更改为1.5.1并且getJson停止工作

时间:2011-03-14 05:04:56

标签: javascript jquery ajax getjson jquery-1.5

今天在我正在研究的网站上,我将jQuery的版本从1.4更改为1.5.1,但是这导致了一个依赖getJson函数停止工作的函数,我看了API和因为请求是一个getRequest,我认为它是向后兼容的。

以下是代码:

function EmailAutoComplete(firstName, lastName, target) {
    // Query /AutoComplete/Email?FirstName=&LastName= for an e-mail
    // list and populate the select box target with the results.
    $.getJSON('@Url.Action("AutoComplete", "Email")', {
        FirstName: firstName,
        LastName: lastName
    }, function(matchingEmails) {
        var oldVal = target.val();
        target.empty();
        if (matchingEmails == null || matchingEmails.length == 0) {
            target.append('<option value="">E-mail address not found</option>');
        } else {
            $.each(matchingEmails, function(key, val) {
                var selected = (val == oldVal) ? 'selected="selected"' : '';
                target.append('<option value="' + val + '" ' + selected + '>' + val + '</option>');
            });

            if (matchingEmails.length > 1) {
                target.addClass("multipleEmailsAvailable");
            } else {
                target.removeClass("multipleEmailsAvailable");
            }
        }
    });
}

还有其他人有这样的问题吗?

谢谢, 亚历克斯。

2 个答案:

答案 0 :(得分:4)

尝试改为使用$.ajax()并指定dataType: "text json"

  

从jQuery 1.5开始,jQuery可以转换为   dataType来自它收到的内容   Content-Type标题给你   要求。例如,如果你想要一个   文本响应被视为XML,   使用“text xml”作为dataType。您   也可以发出JSONP请求   作为文本接收,并由   jQuery as XML:“jsonp text xml。”   同样,一个速记字符串如   “jsonp xml”将首先尝试   从jsonp转换为xml,和   失败,从jsonp转换为   文本,然后从文本到xml。

答案 1 :(得分:0)

我遇到了同样的问题。

原来我的json文件无效。

修复我的json文件后,getJson再次像魅力一样工作。