2011-03-14 67 views
2

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

下面是代码:

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

有没有其他人有过这样的问题吗?

谢谢, Alex。

回答

4

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

在jQuery 1.5,jQuery的可以从它在 Content-Type头收到你 需要转换 数据类型。例如,如果要将 文本响应视为XML,则 将对“dataType”使用“text xml”。您还可以创建JSONP请求,将 作为文本接收,并将其解释为 jQuery作为XML:“jsonp text xml”。 同样,一个简写字符串如 “jsonp xml”将首先尝试 从jsonp转换为xml,并且, 失败,将jsonp转换为 文本,然后从文本转换为xml。

+0

好吧试试吧,但为什么不使用getJson来获得Json呢? – 2011-03-14 05:38:14

+1

阅读http://api.jquery.com/jQuery.getJSON/ – Hussein 2011-03-14 05:44:25

+0

谢谢你的工作就像一个魅力。 – 2011-03-14 05:53:39

0

我遇到了同样的问题。

原来我的json文件无效。

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