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

发布于 2024-10-21 19:00:34 字数 1277 浏览 6 评论 0原文

今天,在我正在开发的一个网站上,我将 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");
            }
        }
    });
}

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

谢谢, 亚历克斯.

Today on a website I was working on I changed the version of jQuery from 1.4 to 1.5.1, however this caused a function which relies on the getJson function to stop working, I have looked at the API and as the request is a getRequest I assumed it was backwards compatible.

Here is the code:

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");
            }
        }
    });
}

Has anyone else had an issue like this?

Thanks,
Alex.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

缱倦旧时光 2024-10-28 19:00:34

尝试使用 $.ajax() 代替并分配 dataType: "text json"

从 jQuery 1.5 开始,jQuery 可以将
dataType 中接收到的数据类型
Content-Type 标题为您的内容
要求。例如,如果您想要一个
文本响应被视为 XML,
使用“text xml”作为数据类型。你
还可以发出JSONP请求,有它
作为文本接收,并由
jQuery 作为 XML:“jsonp 文本 xml”。
类似地,速记字符串如
“jsonp xml”将首先尝试
从 jsonp 转换为 xml,并且,
如果失败,请从 jsonp 转换为
text,然后从text到xml。

Try Using $.ajax() instead and assign dataType: "text json"

As of jQuery 1.5, jQuery can convert a
dataType from what it received in the
Content-Type header to what you
require. For example, if you want a
text response to be treated as XML,
use "text xml" for the dataType. You
can also make a JSONP request, have it
received as text, and interpreted by
jQuery as XML: "jsonp text xml."
Similarly, a shorthand string such as
"jsonp xml" will first attempt to
convert from jsonp to xml, and,
failing that, convert from jsonp to
text, and then from text to xml.

十二 2024-10-28 19:00:34

我遇到了同样的问题。

结果我的 json 文件无效。

修复我的 json 文件后,getJson 再次变得魅力十足。

I ran into this very same issue.

Turns out my json file was not valid.

After fixing my json file getJson worked like a charm again.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文