2012-02-28 96 views
1

我会尽可能多地保存背景故事,但以下是我想要弄清楚的。jquery版本,ajax和Internet Explorer的奇怪问题

我有两个下拉列表,第一个是状态列表,第二个是该州的学校。使用json和php更改选择会触发学校列表。

使用jquery 1.3.2,在Firefox和IE9中一切正常。在IE8中,我收到了一个指向'for'循环的语法错误,脚本不起作用。如果我能弄清楚'for'循环的问题是什么,并且实际上可以使脚本在1.3.2下工作,那很好。

我试着升级到1.4.4或任何较新版本的jquery,当我这样做时,脚本根本不起作用,在任何浏览器中,通过研究我都无法弄清原因。

为了什么它值得我也使用getJSON而不是ajax,如果这在任何地方都有所作为。

$(document).ready(function(){ 
    $("select#addr_state").change(function(){ 

    $.ajax({ 
     url: 'schools.php', 
     dataType: 'json', 
     cache: false, 
     data: {id: $(this).val(), type: "list"}, 
     success: function(j){ 
      var options = ''; 
      for (var i = 0; i < j.length; i++) { 
       options += "<option value='" + j[i].optionValue + "'>" + j[i].optionDisplay + "</option>"; 
      } 
      $("select#school_id").html(options); 
     } 
    });  

    }) 
}) 

对于那些想看到错误的人,它不会让我张贴屏幕截图作为新成员。我正在使用浏览器测试,他们正在使用CompanionJS。我在第41行(for循环)得到了“语法错误”,然后在第42行“'OptionValue'为空或不是对象”,在那里有对jquery.min.js文件的第19行的引用。

在此先感谢您的答复。

+0

你能发布你的错误吗? – SenorAmor 2012-02-28 19:04:09

+0

你得到什么样的错误信息?使用浏览器中的开发人员工具查找。 – 2012-02-28 19:04:53

+2

我想如果它指向for循环'j'是'null'或'undefined' – ckozl 2012-02-28 19:08:55

回答

0

如果更改:

options += "<option value=\"" + j[i].optionValue + "\">" + j[i].optionDisplay + "</option>"; 

options += "<option value='" + j[i].optionValue + "'>" + j[i].optionDisplay + "</option>"; 

有何帮助?

编辑:另一件事尝试:我们的jQuery 1.7.1,并添加/更改为:

dataType: 'jsonp', 
    contentType: "application/json", 

帮助调试:改变for循环部分:(检查是否该开始被添加,没有别的)

var options = "<option value='start'>start</option>"; 
if (j){ 
    for (var i = 0; i < j.length; i++) { 
     options += "<option value='" + j[i].optionValue + "'>" + j[i].optionDisplay + "</option>"; 
    } 
} 
$(options).appendTo("select#school_id"); 

编辑:http://jsfiddle.net/MarkSchultheiss/m3A3w/

EDIT2:问题再件事你可以做的就是添加json2.js(谷歌它),这样做:与形成正确结果的假设测试页alert(JSON.stringify(j));成功开始时的权限:验证您的JSON结构的功能。

+0

代码中的\是因为我的html实际上是一个php函数中的变量。它实际上并没有呈现这种方式。 – 2012-02-28 22:21:00

+0

我会正确发布在这种情况下呈现的内容。 – 2012-02-28 22:27:12

+0

如果我更改为1.7.1并更改了数据类型并添加了contenttype,它根本不起作用。我在开始选项中添加了它,并且它仅在与学校一起填充时添加它,但仍然会收到与以前相同的错误消息。 – 2012-02-29 14:34:41