1

私は小さなプロジェクトに取り組んでいます。私は完全なウェブ初心者であるため、ほとんどの場合、ある程度の理解を得るためです。次の質問で明らかな場合とそうでない場合があります。

私の最終結果は、データベースから一連の値をフェッチすることです。それらを JSON オブジェクトに入れ、jQuery/JavaScript を使用してデータを操作します。私はたくさんの読書をしてきましたが、ここにたくさんの投稿をしましたが、私の問題に関連するものを見つけることができません.

私はVS2010 C#で作業しています。クライアント側は IE7 に縛られていますが、Firefox でテストできます。私もlocalHost現在取り組んでいます。

私のJavaScriptは次のとおりです。

function plotMarkers() {
var pathStart = new String(window.location);
var newPath = pathStart.replace("Default.aspx", "getMarkers.aspx");
alert(newPath);
$("#statusDiv").html('<a href="' + newPath + '">JSON Data</a>');

$.getJSON(newPath, function (data) {

    alert("Loading JSON");
    $.each(data, function (index, elem) {

        var myLatlng = new google.maps.LatLng(elem.lat, elem.lng);
        var marker = new gogle.maps.Marker({
            position: myLatlng,
            title: elem.title
        });

        marker.setMap(map);
    });

}, function () { alert("loaded") });}

Firefox では Javascript エラーは発生しませんが、IE7 では発生します。はalert("Loading JSON")どこにも発火しません。私はそれを見たことがない。

私の getMarkers.aspx コード

public partial class getMarkers : System.Web.UI.Page {
    protected void Page_Load(object sender, EventArgs e) {
        JavaScriptSerializer jsonSer = new JavaScriptSerializer();

        List<marker> markerList = new List<marker>();
        markerList.Add(new marker(-34.397, 150.644, "Test"));
        markerList.Add(new marker(-50, 150.644, "Test2"));

        string sJSON = jsonSer.Serialize(markerList);
        Response.ContentType = "application/json";
        Response.Write(sJSON);
    }
}

「statusDiv」のリンクをクリックすると、aspx ページに移動します。IE7 ではエラーが発生しますが、Firefox では問題なく動作します。これらのページで解析された JSON は正しいです。応答をコピーして別の関数に貼り付けると、プロッターが 2 つのピンをマップに配置しました。

  1. $.getJSONコードは関数に入っていないようです。

  2. getMarkers.aspx私のセットアップ方法にはIE7の問題(または一般的な問題)があります。いくつかのチュートリアルをグーグルで検索しましたが、これが私がたどり着いた場所です。私のアプローチは完全に間違っているかもしれません。または、私がするはずだった何かを逃しました。その特定のチュートリアルが見つからないようです.2日間の猛烈なGoogleの冒険の中で偶然閉じられたに違いありません.

FirefoxgetMarkers.aspxは、JSON を最初の行として表示し、その後に html を表示します。ブラウザでプレーンテキストのみ。

IE7 は XML エラーを表示し、JSON 文字列がドキュメントのトップ レベルで許可されていないことを通知します。IE7 が常に精巧な回避策で XML を解析しようとしているという記事をいくつか読みました。何人のクライアントがそれを使用するかわからないため、これはできません。私がやっていることを行うためのより良い方法はありますか?

誰かが私が行く必要がある方向に私を向けることができれば、私はそれを大いに感謝します. うまくいけば、私の投稿はあまり複雑ではありません。

4

3 に答える 3

0

#statusDiv リンクがクリックされたときに、既存のページの地図にマーカーを表示しようとしていますか? もしそうなら、それは間違っています: #statusDiv にリンクを置かないでください。クリックしたときに getJSON 関数が呼び出されることを確認してください。これを試して :

function plotMarkers() {
    var pathStart = new String(window.location);
    var newPath = pathStart.replace("Default.aspx", "getMarkers.aspx");
    alert(newPath);
    $("#statusDiv").text('JSON Data');
    $("#statusDiv").on('click',function(){

        $.getJSON(newPath, function (data) {

        alert("Loading JSON");
        $.each(data, function (index, elem) {

            var myLatlng = new google.maps.LatLng(elem.lat, elem.lng);
            var marker = new gogle.maps.Marker({
                position: myLatlng,
                 title: elem.title
            });

            marker.setMap(map);
        });

    }, function () { alert("loaded") });
});
}
于 2013-01-03T14:06:38.623 に答える
0

まず第一に、IE7 の問題を処理するにはjson2ライブラリが必要だと思われます。

関数の起動に関しては、 plotMarkers() が実際に呼び出されている場所がどこにもありません。定義されているだけですか?

于 2013-01-03T13:52:56.943 に答える