Php jquery版本、ajax和Internet Explorer存在奇怪的问题

Php jquery版本、ajax和Internet Explorer存在奇怪的问题,php,jquery,ajax,internet-explorer-7,Php,Jquery,Ajax,Internet Explorer 7,我会尽可能多地保留幕后故事,但以下是我想弄明白的 我有两个下拉列表,第一个是州列表,第二个是该州的学校。更改select会触发一个包含json和php的学校列表 使用jQuery1.3.2,Firefox和IE9中的一切都可以正常工作。在IE8中,我得到一个指向“for”循环的语法错误,脚本无法工作。如果我能找出“for”循环的问题所在,并能让脚本在1.3.2中工作,那就好了 我尝试升级到1.4.4或任何更新版本的jquery,但当我这样做时,脚本根本无法在任何浏览器中工作,通过研究,我一直无法

我会尽可能多地保留幕后故事,但以下是我想弄明白的

我有两个下拉列表,第一个是州列表,第二个是该州的学校。更改select会触发一个包含json和php的学校列表

使用jQuery1.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);
        }
    });     

  })
})
$(文档).ready(函数(){
$(“选择添加状态”).change(函数(){
$.ajax({
url:'schools.php',
数据类型:“json”,
cache:false,
数据:{id:$(this).val(),键入:“list”},
成功:功能(j){
var选项=“”;
对于(变量i=0;i
对于那些想看到错误的人,它不会让我作为新成员发布屏幕截图。我正在使用browserstack进行测试,他们正在使用CompanyJS。我在第41行(for循环)中得到了“Syntax error”,然后在第42行“OptionValue”为null或不是对象”,下面是对jquery.min.js文件的引用,第19行

提前感谢您的回复。

如果您更改:

options += "<option value=\"" + j[i].optionValue + "\">" + j[i].optionDisplay + "</option>"; 
帮助调试:将for循环部分更改为:(检查是否添加了此开始,而没有其他内容)

var options=“开始”;
如果(j){
对于(变量i=0;i
编辑:假设正确形成结果的测试页面:

EDIT2:您可能要做的另一件事是添加json2.js(googleit)并执行以下操作:
警报(JSON.stringify(j));就在成功的开始:验证JSON结构的函数。

您可以发布错误吗?您收到了什么类型的错误消息?使用浏览器中的开发人员工具找出问题所在。我猜如果它指向for循环
j
null
undefined
,您可以发布表单和一个导致IE中出现问题的json响应示例吗?是的,发布json响应示例将非常有用。我打赌在这种情况下JSON格式不正确。代码中的\是因为我的html实际上是php函数中的一个变量。它实际上不是那样呈现的。我会发布在这种情况下呈现的内容。如果我更改为1.7.1并更改了数据类型并添加了contenttype,则它根本不起作用。我在“开始”选项中添加了该选项,并且它仅在填充学校时添加该选项,我仍然会收到与以前相同的错误消息。@AllenHall-我添加了一个示例页面,您可以利用它。也可以查看ajaxError部分来隔离错误。因此,我添加了json2和alert()行,它成功了,这意味着输出显示在alert窗口中。
options += "<option value='" + j[i].optionValue + "'>" + j[i].optionDisplay + "</option>"; 
    dataType: 'jsonp',
    contentType: "application/json",
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");