2012-04-02 12 views
0

Ich habe ein sehr seltsames Problem, bei dem sich identische Teile von Javascript anders verhalten, wenn sie aus verschiedenen Quellen stammen. Der Code befindet sich am Ende dieses Beitrags.Identischer Code unterscheidet sich von verschiedenen Quellen

Die Seite, auf der dieser Code verwendet wird, besteht aus zwei unterschiedlichen Quellen: einer Standardansichtsdatei und Inhalt (Markup) aus einer Datenbank. Die Zusammenstellung erfolgt auf der Serverseite und wird als vereinheitlichtes Dokument an den Client gesendet. Soweit der Kunde betroffen ist, ist die Seite identisch.

Das Problem, das ich habe, ist dies: Wenn in der Ansichtsdatei platziert, wird der Code normal ausgeführt und verhält sich wie erwartet. Wenn er jedoch in der Datenbank platziert wird, meldet der Browser missing } after function body.

Der Code in der Datenbank und der View-Datei ist identisch. Es gibt einen einzigen Unterschied: Wenn Sie in der Datenbank platziert werden, werden alle Zeilenumbrüche (\n) entfernt. Könnte das das Problem sein? Wenn nicht, hat jemand diese Art von Problem schon einmal gesehen?

var rssTimeout = setTimeout(GetRSSFeed, 300000); 
$(document).ready(function() { 
    GetRSSFeed(); 
}); 

var GetRSSFeed = function() { 
    var feedProxyURL = "http://localhost/BusinessLogicAPI/api/Proxy/RSSFeed?URL=http://feeds.bbci.co.uk/news/rss.xml"; 
    $.ajax({ url: feedProxyURL, 
     type: "GET", 
     dataType: "xml", 
     success: function (data) { 
      var xmData = $(data); 

      //For the first 5 stories, 
      //build some JSON data and give it to the templates 
      xmData.children("rss") 
       .children("channel") 
       .children("item") 
       .slice(0, 5) 
       .each(function (I, E) { 
        var json = {}; 
        json.title = $(E).children("title").text(); 
        json.description = $(E).children("description").text(); 

        $("#newsTemplate").tmpl(json).appendTo("#newsFeed"); 
       }); 
     }, 
     error: function() { 
      $("#newsFeed").html("<span>Could not open feed</span>"); 
     } 
    }); 
    rssTimeout = setTimeout("GetRSSFeed()", 300000); 
}; 
+0

nitpick: 'setTimeout (" GetRSSFeed() ", 300000);' sollte 'setTimeout (GetRSSFeed, 300000) sein;' – jbabey

+0

Fest, danke. – AndyBursh

Antwort

1

Vermutlich die beide // ... Linie Kommentare bewirken, dass der Rest des Javascript Kommentar gesetzt werden. Entfernen Sie die Kommentare und sehen Sie, ob es funktioniert?

+1

Oh mein, oh mein! Wie habe ich das vermisst? Ich habe lange genug darauf gestarrt. Vielen Dank! – AndyBursh

+1

Gern geschehen! Manchmal ist ein anderes Augenpaar alles, was Sie brauchen ... – stef

+0

Sie könnten sie in /*...*/ ändern, wenn Sie die Kommentare dort behalten möchten. – jbabey

0

Wir haben eine Zeile in JavaScript auskommentiert, aber es wurde in IE9 erkannt, während es als Kommentar in IE8 und Mozilla behandelt wurde.

Verwandte Themen