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 是正确的。我将响应复制并粘贴到另一个函数中,绘图仪将两个图钉放在我的地图上。

  1. 代码似乎没有进入$.getJSON函数。

  2. IE7 的设置存在问题(或一般问题)getMarkers.aspx。谷歌搜索了一些教程,这就是我结束的地方。我的方法可能完全错误。或者我错过了我应该做的事情。我似乎找不到那个具体的教程,它一定是在我愤怒的 2 天并计数谷歌冒险中意外关闭的。

FirefoxgetMarkers.aspx将 JSON 显示为第一行,然后是 html。只是浏览器中的纯文本。

IE7 显示一个 XML 错误并告诉我 JSON 字符串不允许出现在文档的顶层。我确实阅读了一些关于 IE7 的文章,总是试图用一个精心设计的解决方法来解析 XML。我不能这样做,因为我不知道有多少客户会使用它。有没有更好的方法来做我正在做的事情?

如果有人能指出我需要去的方向,我将不胜感激。希望我的帖子不会太复杂。

4

3 回答 3

1

您可能希望在页面加载方法结束时使用 Response.End(),以便在 JSON 之后不会呈现网页的其余部分。

于 2013-01-03T13:53:09.060 回答
0

在我看来,对于初学者来说,您需要json2库来处理 IE7 的问题。

至于触发你的函数 - 我看不到实际调用 plotMarkers() 的任何地方,它只是定义的?

于 2013-01-03T13:52:56.943 回答
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 回答