2012-03-19 10 views
1

私はjQueryがクロスブラウザの問題を解決すると考えていました。とにかくIE9、Firefox、Chromeではうまく動作し、IE8ではうまく動作しないコードがいくつかあります。私がやるべきことはオプションでselectタグを読み込むことだけです。私もIE8で動作するかで動作することを、それをコードする別の方法を見つけるために、これが必要jQuery 1.7はIE8とIE9で異なって動作しますか?

$(document).ready(function() { 
$.ajax({ 
     type: "POST", 
     url: "myPage.aspx/MyWebMethod", 
     contentType: "application/json; charset=utf-8", 
     data: "{}", 
     dataType: "json", 
     success: function (states) { 
      var jsonCodes = JSON.parse(states.d); 
      for (var i in jsonCodes) { 
       $("#Select0").append(new Option(jsonCodes[i].regionname, jsonCodes[i].region_id)); 
      } 
     } 
    }); 

<select id="Select0"></select> 

とjQuery(1.7):私は、次の選択ページ上のタグを持っていますすべてのブラウザ。 ありがとう

+1

jQueryを利用する唯一の方法は、jQueryを使用することです。ネイティブコードとjQueryが混在しています。それでも問題ありませんが、互換性の問題を知る必要があります。 –

+0

'jQueryはクロスブラウザの問題を解決するはずだと思っていましたが、あなたの例ではjQueryだけでなく、' JSON'オブジェクトと 'for'ループも問題を引き起こす可能性があります。 –

+0

代わりにjQuery.getJSON ? –

答えて

1

IE7はJSON.parseをサポートしていません。もちろん、jQueryにはこの問題の解決策があります。これを試してみてください:

var jsonCodes = $.parseJSON(states.d); 

更新:

私は$(element).append(new Option(x,y));はIE8で動作させることはできません。オプションはラベルなしで追加されます。 http://jsfiddle.net/7qfhg/。この構文http://jsfiddle.net/7qfhg/3/に変更してみてください:あなたはこれを含める必要はありません

var sel = $("select"); 
for (var i = 1; i <= 50; i++) { 
     sel.append("<option value='" + i + "'>" + i + "</option>"); 
} 
+0

興味深いですが、私は仕事に戻ってみると面白いです。しかし、JSON.parseをコードの他の場所でHTMLのテーブルにデータの行を追加すると、IE8でも正常に動作します。入力いただきありがとうございます。 –

+0

あなたは正しいです、IE8は 'JSON.parse'をサポートしています、ごめんなさい。 IE7は間違いないです。 –

+0

'$ .parseJSON()'に切り替える以外に、私は何か間違っているとは限りません。 '$ .parseJSON()'がすべてのブラウザで動作しない場合は、jsonがhttp://jsonlint.comで有効であることを確認してください。 –

0

dataTypejsonときにjQuery以来

var jsonCodes = JSON.parse(states.d); 

があなたのためにそれを解析します。

+0

DOM要素を直接作成するよりも、HTML文字列が優れているのはなぜですか? –

+0

@私は私ではない - 同じことを "私は"迷っている。 –

+0

私の悪い、私は何かについて考えていた。 – MacMac

関連する問題