ASP.NET Ajax client-side framework failed to load.
Hej eksperter.Jeg har prøvet at lave ne online chat efter dette eksempel:
http://www.junnark.com/Articles/Build-a-Web-Chat-Application-Using-ASP-Net-LINQ-and-AJAX-VB.aspx
men har problemer ved brug af upload panel.
Når siden loader indeholder den denne fejl.
Den kommer når jeg bruger scriptmanager og updatepanel
//<![CDATA[
if (typeof(Sys) === 'undefined') throw new Error('ASP.NET Ajax client-side framework failed to load.');
//]]>
fejlen kommer både når jeg kører det fra vs2008 og når den kører på surftown webhotel.
samtidig fryser update 5 sekunder når timeren har eksekveret koden og jeg skal sætter focus på min tekstboks. Dette sker ikke hvis jeg ikke bruger updatepanel men ville gerne at det kun var chatboksen der blev opdateret.
Har lavet eksemplel på www.uniformdating.dk/test.
Der kan man vælge 2 undersider hvis eneste forskel at den ene er med updatepanel og den anden uden.
.Her er koden på siden med updatepanel
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default2.aspx.vb" Inherits="_Default2" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script type="text/javascript">
function SetScrollPosition() {
var div = document.getElementById('divMessages');
div.scrollTop = 100000000000;
}
function SetToEnd(txtMessage)
{
if (txtMessage.createTextRange)
{
var fieldRange = txtMessage.createTextRange();
fieldRange.moveStart('character', txtMessage.value.length);
fieldRange.collapse();
fieldRange.select();
}
}
function ReplaceChars()
{
var txt = document.getElementById('txtMessage').value;
var out = "<"; // replace this
var add = "?"; // with this
var temp = "" + txt; // temporary holder
while (temp.indexOf(out)>-1)
{
pos= temp.indexOf(out);
temp = "" + (temp.substring(0, pos) + add +
temp.substring((pos + out.length), temp.length));
}
document.getElementById('txtMessage').value = temp;
}
</script>
<style type="text/css">
.style1
{
height: 300px;
width: 501px;
}
.style2
{
width: 500px;
}
.style3
{
width: 23px;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:Label ID="Label1" runat="server" Text="Testside uden UpdatePanel"></asp:Label>
<br />
<asp:Timer ID="Timer1" runat="server" Interval="7000">
</asp:Timer>
<div id="divMessages"
style="border: 1px solid Black; background-color: White; font-size: 11px; padding: 4px 4px 4px 4px;overflow-y:scroll;"
class="style1">
<asp:Literal Id="litMessages" runat="server" />
</div>
<br />
<asp:TextBox ID="txtMessage" runat="server" MaxLength="100"
onfocus="SetToEnd(this)" onkeyup="ReplaceChars()" Width="424px" />
<asp:Button ID="btnSend" runat="server" OnClick="BtnSend_Click"
OnClientClick="SetScrollPosition()" Text="Send" />
</div>
</form>
</body>
</html>
her er VB siden uden connectionstring
Imports MySql.Data.MySqlClient
Imports System.Data
Partial Class _Default2
Inherits System.Web.UI.Page
Public DBstr As String = ""
Protected Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
GetMessages()
ScriptManager1.SetFocus(txtMessage.ClientID)
End Sub
Protected Sub BtnSend_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSend.Click
If txtMessage.Text.Length > 0 Then
'indsætter chat meddelse i chattabel
InsertMessage()
GetMessages()
txtMessage.Text = String.Empty
ScriptManager1.SetFocus(txtMessage.ClientID)
Else
GetMessages()
txtMessage.Text = String.Empty
ScriptManager1.SetFocus(txtMessage.ClientID)
End If
End Sub
Public Sub InsertMessage()
Using MyConn As MySqlConnection = New MySqlConnection(DBstr)
Using Cmd As MySqlCommand = New MySqlCommand("A_InsertChatmsg", MyConn)
Cmd.CommandType = Data.CommandType.StoredProcedure
Cmd.Parameters.Add(New MySqlParameter("msg", txtMessage.Text))
MyConn.Open()
Cmd.Connection = MyConn
Cmd.ExecuteNonQuery()
MyConn.Close()
End Using
End Using
End Sub
Public Sub GetMessages()
Dim msglist As New DataView
Using MyConn As New MySqlConnection(DBstr)
Using Cmd As MySqlCommand = New MySqlCommand("A_Getmsg", MyConn)
With Cmd
.CommandType = CommandType.StoredProcedure
End With
Using MySqlDA As New MySqlDataAdapter(Cmd)
Using MyDS As New DataSet
MyDS.Clear()
MySqlDA.Fill(MyDS, "messages")
Dim MyDataView As DataView = New DataView
msglist.Table = MyDS.Tables("messages")
End Using
End Using
End Using
End Using
If Not msglist Is Nothing Then
Dim sb As StringBuilder = New StringBuilder()
Dim ctr As Integer = 0 ' toggle counter for alternating color
For i = 0 To msglist.Table.Rows.Count - 1
'sb = New StringBuilder
Dim FV_Row As DataRow = msglist.Item(i).Row
Dim txt As String = FV_Row.Item(1).ToString
Dim msgtime As DateTime = FV_Row.Item(2).ToString
Dim msgtime1 As TimeSpan
msgtime1 = msgtime.TimeOfDay
' alternate background color on messages
If ctr = 0 Then
sb.Append("<div style='padding: 10px; color: black;'>")
ctr = 1
Else
sb.Append("<div style='background-color: #EFEFEF; color: white; padding: 10px;'>")
ctr = 0
End If
sb.Append("" & msgtime1.ToString & " " & txt & "</div>")
Next
litMessages.Text = sb.ToString()
End If
End Sub
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
GetMessages()
End Sub
End Class
Håber nogen kan hjælpe. Har skrallet alt væk på de 2 testsider og er overbevist om at de må ha noget at gøre med den fejl der er når siden loades.
PS. Den rigtige chat er selvfølgelig mere omfattende men har lavet dette som eksempel for dette spørgsmål
hilsen Klaus