2012-02-28 62 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