Javascript length属性在firefox和;IE/铬

Javascript length属性在firefox和;IE/铬,javascript,jquery,json,Javascript,Jquery,Json,ie和chrome中的data.length为2。firefox中的data.length是197。以下是firefox中数据变量的外观: HTTP/1.1 200 OK Cache-Control: no-cache Pragma: no-cache Content-Type: application/json; charset=utf-8 Expires: -1 Server: Microsoft-IIS/8.0 Access-Control-Allow-Origin: * X-AspNet

ie和chrome中的data.length为2。firefox中的data.length是197。以下是firefox中数据变量的外观:

HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Server: Microsoft-IIS/8.0
Access-Control-Allow-Origin: *
X-AspNet-Version: 4.0.30319
X-SourceFiles: =?UTF-8?B?QzpcVXNlcnNcQnJlbnRcRG9jdW1lbnRzXFZpc3VhbCBTdHVkaW8gMjAxMlxQcm9qZWN0c1xURlNcUnVuTG9nXE1haW5cUnVuTG9nXHJ1bnM=?=
X-Powered-By: ASP.NET
Date: Fri, 28 Sep 2012 16:04:47 GMT
Content-Length: 197

[{"RunId":1,"Date":"2012-09-28T00:00:00","Distance":4.00,"Hours":null,"Minutes":35,"Seconds":null},{"RunId":2,"Date":"2012-09-28T00:00:00","Distance":6.00,"Hours":null,"Minutes":50,"Seconds":null}]
在ie/chrome中,它看起来像:

"[{"RunId":1,"Date":"2012-09-28T00:00:00","Distance":4.00,"Hours":null,"Minutes":35,"Seconds":null},{"RunId":2,"Date":"2012-09-28T00:00:00","Distance":6.00,"Hours":null,"Minutes":50,"Seconds":null}]"
  • 4
  • 6
在Firefox中:

<ul id="runs">
    <li id="1">4</li>
    <li id="2">6</li>
</ul>
  • 未定义
  • …197次

有人知道为什么firefox不能正常工作吗?

我想您需要将数据解析为json。目前它是字符串格式的,firefox将其视为字符串。因此,请尝试以下代码:

<ul id="runs">
   <li id="undefined">undefined</li>
   ...197 times
</ul>
$($.ajax)({
网址:'http://localhost:3606/runs',
//发送前:函数(xhr){
//setRequestHeader(“源文件”http://localhost:2286/");
//},
成功:功能(数据){
var result=JSON.parse(数据);
对于(变量i=0;i”+result[i].Distance+“”);
}
}
}))

希望这会有帮助

将数据类型选项添加到$.ajax调用:

$($.ajax({
    url: 'http://localhost:3606/runs',
    //beforeSend: function (xhr) {
    //    xhr.setRequestHeader("Origin", "http://localhost:2286/");
    //},
    success: function(data) {
        var result = JSON.parse(data);
        for (var i = 0; i < result.length; i++) {
            var list = $('#runs');
            list.append('<li id="' + result[i].RunId + '">' + result[i].Distance + "</li>");
        }
     }
}))
$($.ajax)({
网址:'http://localhost:3606/runs',
数据类型:'json',
//发送前:函数(xhr){
//setRequestHeader(“源文件”http://localhost:2286/");
//},
成功:功能(数据){
对于(变量i=0;i”+data[i].Distance+“”);
}
}
}))

如果在success函数中放入console.log(typeof data),我怀疑您可能会拿回“string”。
$($.ajax({
很奇怪-您可能是想将其放入
$(function(){$.ajax)中({
@Rob没有函数引用。OP正在调用AJAX函数并将结果传递给$function。@Dennis您完全正确。正在启动并运行:).Mobile:始终指定数据类型是最佳做法还是我遇到了罕见的异常?感谢您的解决方案,这始终是一个好做法,否则jQuery必须猜测它应该是什么。另外,我是“Molle”,而不是“Mobile”。“Molle”是我家乡啤酒的同义词^^你的解决方案也奏效了。谢谢。不过我可能会按照莫比尔博士的建议去做。
$($.ajax({
    url: 'http://localhost:3606/runs',
    //beforeSend: function (xhr) {
    //    xhr.setRequestHeader("Origin", "http://localhost:2286/");
    //},
    success: function(data) {
        var result = JSON.parse(data);
        for (var i = 0; i < result.length; i++) {
            var list = $('#runs');
            list.append('<li id="' + result[i].RunId + '">' + result[i].Distance + "</li>");
        }
     }
}))
$($.ajax({
    url: 'http://localhost:3606/runs',
    dataType:'json',
    //beforeSend: function (xhr) {
    //    xhr.setRequestHeader("Origin", "http://localhost:2286/");
    //},
    success: function(data) {
        for (var i = 0; i < data.length; i++) {
            var list = $('#runs');
            list.append('<li id="' + data[i].RunId + '">' + data[i].Distance + "</li>");
        }
     }
}))