2012-02-28 10 views
1

できるだけ多くのバックストーリーを保存しますが、ここで私が理解しようとしていることはあります。jqueryのバージョン、ajax、Internet Explorerの奇妙な問題

私は2つのドロップダウンを持っています、最初は州のリスト、2番目はその州の学校です。 selectを変更すると、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); 
     } 
    });  

    }) 
}) 

エラーを見たいと思った方には、スクリーンショットを新しいメンバーとして投稿することはできません。私はbrowserstackを使ってテストしています。彼らはCompanionJSを使っています。 41行目(forループ)に "Syntax error"があり、42行目に "OptionValue 'がnullまたはオブジェクトではない"と表示され、jquery.min.jsファイルの19行目への参照があります。

お返事ありがとうございます。

+0

エラーを投稿できますか? – SenorAmor

+0

どのようなエラーメッセージが表示されますか?ブラウザのデベロッパーツールを使用して調べます。 –

+2

私はそれがループのために '' null'なのでまたは ' – ckozl

答えて

0

あなたが変更した場合:

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

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

はその助けをしますか?

EDIT:jQueryの1.7.1私たちをしてまで/変更追加:

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"); 

EDIT:http://jsfiddle.net/MarkSchultheiss/m3A3w/

EDIT2:適切に形成された結果を想定したテストページあなたが行う可能性がありますAnothereの事はjson2.jsを追加する(それをグーグル)と行います: アラート(JSON.stringify(j));成功の冒頭にあるRIGHT:JSON構造を検証する関数。

+0

私のHTMLは実際にはPHP関数内の変数なので、コード中の\はです。実際にはそのようにレンダリングされません。 –

+0

私はこの場合レンダリングされるものを正確に投稿します。 –

+0

1.7.1に変更してデータ型を変更してcontenttypeを追加すると、まったく動作しません。私は開始オプションに追加し、それはそれが学校に移入するときに追加します、私はまだ前と同じエラーメッセージを取得します。 –

関連する問題