是一个在线服务功能,原来在网站上,现在老大要把他放在办公平台上,原来登陆取消,只使用平台登陆,但是这个功能是另一个用js做的,我一点都不懂,今天就要完成,求各位帮忙!这是部分关键的代码代码MessageForm.js
var isCanRequest = true;
var isNeedUpdate = true;
var updateTimeInit =2;
var updateTime = updateTimeInit;
var uId = "0";
var uName = "";
var intervalTimeInit = 3;
var intervalTime = intervalTimeInit;
var interval = 800;
var intervalObject = null;
var csButtonValue = "Add Message";function refreshMessage()
{
if(isCanRequest)
{
disposeUpdateMessage();
}
}function disposeSendMessage()
{
if(!messageCheck())
return false;
var messageContent = getMessageObject().value;
var now = new Date();
var m = new Message();
m.sUId = uId;
m.sUName = uName;
m.releaseDateTime = now;
m.content = getMessageObject().value;
disposeAddMessage(m);
updateTime = updateTimeInit;
isCanRequest = false;
doSendMessage(uId,messageContent,updateProcess,handleDoSendMessage);
clearMessage();
adjustMessageList();
}function disposeAddMessage(m)
{
var ml = getMessageListObject();
var rd = new Date(m.releaseDateTime);
var sendDateTime = (rd.getMonth()+1) + "/" + rd.getDate() + "/" + rd.getYear()+" "
+rd.getHours()+":"+rd.getMinutes()+":" + rd.getSeconds();
if(ml.value != "")
{
ml.value += "\n";
} ml.value += m.sUName + " " + sendDateTime 
+ "\n" + m.content;
}function disposeUpdateMessage()
{
//doUpdateMessage(uid,updateProcessMethod,resultHandler)
if(isNeedUpdate && (updateTime>0))
doUpdateMessage(uId,updateProcess,handleDoUpdateMessage);
}function updateProcess()
{

}function customerLogin()
{
//window.open("../security/login.aspx","","scrollbars=no");
//window.close("MessageForm.aspx","","");
//window.open("CustomerLogin.htm","","width=400,height=300,scrollbars=no");
}function messageCheck()
{
if(uId=="0")
{
alert("Please login first!");
customerLogin();
return false;
}
if(getMessageObject().value == "")
{
alert("Message content can't be empty!");
return false;
}
else
return true;
}function getMessageListObject()
{
return document.getElementById("messageList");
}function getMessageObject()
{
return document.getElementById("message");
}function getButtonObject()
{
return document.getElementById("btnAddMessage");
}function initializeComponents()
{
getMessageListObject().onkeydown = function(){return false;}
getButtonObject().onclick = disposeSendMessage;
updateTime = 0;
window.setInterval(refreshMessage,interval*3);
//getMessageListObject().canHaveHTML = true;
customerLogin();
}function handleDoSendMessage(response)
{
var result = parseSendMessageResult(response,"AddMessageResult");
getMessageListObject().value += "(Send " + result + ")";
isNeedUpdate = true;
isCanRequest = true;
}function handleDoUpdateMessage(response)
{
var messages = parseUpdateMessageResult(response);
var m = null;
if(messages.length>0)
updateTime--;
else
return;
for(var i=0;i<messages.length;i++)
{
m = messages[i];
if(m instanceof Message)
disposeAddMessage(m);
adjustMessageList();
}
}function clearMessage()
{
getMessageObject().value = "";
sendMessageResume();
intervalTime = intervalTimeInit;
intervalObject = window.setInterval(intervalHint,interval);
}function adjustMessageList()
{
//this.style.posHeight=this.scrollHeight
/*
alert("style.posHeight:"+getMessageListObject().style.posHeight+"\n"
+ "scrollHeight:"+getMessageListObject().scrollHeight+"\n"
+ "scrollTop:"+getMessageListObject().scrollTop+"\n"
+ "offsetTop:"+getMessageListObject().offsetTop+"\n"
+ "offsetHeight:"+getMessageListObject().offsetHeight+"\n"
+ "clientHeight:"+getMessageListObject().clientHeight+"\n"
+ "clientTop:"+getMessageListObject().clientTop+"\n"
+ "scrollHeight:"+getMessageListObject().scrollHeight+"\n"
+ "scrollTop:"+getMessageListObject().scrollTop);
*/
//getMessageListObject().style.posHeight = getMessageListObject().scrollHeight;
var ml = getMessageListObject();
var heightDiff = ml.scrollHeight - ml.clientHeight;
if(heightDiff>0)
ml.scrollTop = heightDiff;
}function intervalHint()
{
if(intervalTime<=0)
{
getButtonObject().value = csButtonValue;
sendMessageSuspend();
clearInterval(intervalObject);
return;
}
getButtonObject().value = csButtonValue + "(" + intervalTime + ")";
intervalTime--;
}
function sendMessageResume()
{
getButtonObject().disabled = true;
}
function sendMessageSuspend()
{
getButtonObject().disabled = false;
}
前台
<%@ Page language="c#" Codebehind="MessageForm.aspx.cs" AutoEventWireup="false" Inherits="WebChatOnline.MessageForm" %>
<HTML>
<HEAD>
<title>WebForm1</title>
<meta name="content-type" Content="application/x-www-form-urlencoded; charset=utf-8">
<script language="javascript" type="text/javascript" src="JsLib/Config.js"></script>
<script language="javascript" type="text/javascript" src="JsLib/Common.js"></script>
<script language="javascript" type="text/javascript" src="JsLib/AjaxHelperV3.js"></script>
<script language="javascript" type="text/javascript" src="JsLib/MessageHandler.js"></script>
<script language="javascript" type="text/javascript" src="JsLib/MessageForm.js"></script>
</HEAD>
<body onload="javascript:initializeComponents();">
<form id="Form1" method="post" runat="server">
<textarea id="messageList" rows="10" cols="50"></textarea><br>
<textarea id="message" rows="4" cols="40"></textarea> <input id="btnAddMessage" name="message" value="Add Message" type="button">&nbsp;
</form>
</body>
</HTML>

解决方案 »

  1.   

    续上
    MessageServer.asmxusing System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Diagnostics;
    using System.Web;
    using System.Web.Services;
    using System.Data;
    using LJ;
    namespace WebChatOnlineService
    {
    /// <summary>
    /// 信息
    /// </summary>
    public struct Message
    {
    public int mId;
    public int sUId; //source user id
    public string sUName; //source user name
    public int dUId; //dest user id
    public string dUName; //dest user name
    public string releaseDateTime;
    public string content;
    } public struct Customer
    {
    public int cId;
    public string name;
    } /// <summary>
    /// MessageServer 的摘要说明。
    /// </summary>
    public class MessageServer : System.Web.Services.WebService
    {
    private string strCon = "";

    public string StrCon
    {
    get
    {
    if( strCon == "" || strCon == null )
    {
    strCon = System.Configuration.ConfigurationSettings.AppSettings["strcon"];
    return strCon;
    }
    else
    return strCon;
    }
    } public MessageServer()
    {
    //CODEGEN: 该调用是 ASP.NET Web 服务设计器所必需的
    InitializeComponent();
    } #region 组件设计器生成的代码

    //Web 服务设计器所必需的
    private IContainer components = null;

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {
    } /// <summary>
    /// 清理所有正在使用的资源。
    /// </summary>
    protected override void Dispose( bool disposing )
    {
    if(disposing && components != null)
    {
    components.Dispose();
    }
    base.Dispose(disposing);
    }

    #endregion // WEB 服务示例
    // HelloWorld() 示例服务返回字符串 Hello World
    // 若要生成,请取消注释下列行,然后保存并生成项目
    // 若要测试此 Web 服务,请按 F5 键// [WebMethod]
    // public string HelloWorld()
    // {
    // return "Hello World";
    // }
    /// <summary>
    /// 
    /// </summary>
    /// <param name="uId"></param>
    /// <param name="content"></param>
    /// <returns></returns>
    [WebMethod]
    public bool AddMessage(int uId,string content)
    {
    DB db = null;
    try
    {
    db = new DB(StrCon);
    string sqlCmd = "INSERT INTO ChatMessage(type,sourceUid,content)"
    +"VALUES('C',"+uId.ToString()+",'"+content+"')";
    int i = db.ExeQuery(sqlCmd);
    if(i>0)
    return true;
    else
    return false; }
    catch(Exception ex)
    {
    return false;
    }
    finally
    {
    if(db != null)
    db.Dispose();
    db = null;
    }
    }
    /// <summary>
    /// 
    /// </summary>
    /// <param name="mId"></param>
    /// <param name="sUId"></param>
    /// <param name="dUId"></param>
    /// <param name="content"></param>
    /// <returns></returns>
    [WebMethod]
    public bool AddAnswerMessage(int mId,int sUId,int dUId,string content)
    {
    DB db = null;
    try
    {
    db = new DB(StrCon);
    string sqlCmd = "Exec UP_AddAnswerMessage "
    + mId.ToString() +","
    + sUId.ToString() +","
    + dUId.ToString() +","
    + "'"+ content +"'";
    int i = db.ExeQuery(sqlCmd);
    if(i>0)
    return true;
    else
    return false; }
    catch(Exception ex)
    {
    return true;
    }
    finally
    {
    if(db != null)
    db.Dispose();
    db = null;
    }
    return true;
    }
    /// <summary>
    /// 
    /// </summary>
    /// <param name="uId"></param>
    /// <returns></returns>
    [WebMethod]
    public Message[] UpdateMessage(int uId)
    {
    Message[] messages = null;
    System.Data.DataSet ds = null;
    DB db = null;
    int messageCount = 0;
    Message aMessage;
    string sqlCmd = "Exec UP_GetAnswerMessage " + uId.ToString();
    try
    {
    db = new DB();
    ds = db.GetDataSet(sqlCmd);
    messageCount = ds.Tables[0].Rows.Count;
    if(messageCount>0)
    {
    messages = new Message[messageCount];
    for(int i = 0;i<messageCount;i++)
    {
    //mid,sourceUid,releaseDateTime,content
    System.Data.DataRow r = ds.Tables[0].Rows[i];
    aMessage = new Message();
    aMessage.mId = Convert.ToInt32(r["mid"].ToString());
    aMessage.sUId = Convert.ToInt32(r["sourceUid"].ToString());
    aMessage.sUName = "Service"+aMessage.sUId.ToString();
    aMessage.releaseDateTime = r["releaseDateTime"].ToString();
    aMessage.dUId = 0;
    aMessage.dUName = "";
    aMessage.content = r["content"].ToString();
    messages[i] = aMessage;
    }
    }
    }
    catch(Exception ex)
    {
    ex.ToString();
    }
    finally
    {
    if(ds!=null)
    ds.Dispose();
    ds = null;
    if(db!=null)
    db.Dispose();
    db = null;
    } /*
    int i =2;
    //日期格式 2007/6/16 10:35:26
    Message[] messages = new Message[i];
    messages[0].mId = 1;
    messages[0].sUId = 11;
    messages[0].sUName = "客服001";
    messages[0].dUId = 0;
    messages[0].dUName = "";
    messages[0].releaseDateTime = DateTime.Now.ToString("yyyy/MM/dd", System.Globalization.DateTimeFormatInfo.InvariantInfo);;
    messages[0].content = "你好!";
    messages[1].mId = 2;
    messages[1].sUId = 11;
    messages[1].sUName = "客服001";
    messages[1].dUId = 12;
    messages[1].dUName = "LJ";
    messages[1].releaseDateTime = DateTime.Now.ToString().Replace("-","/");
    messages[1].content = "有什么能帮到您的吗?";
    */
    return messages;
    }
    /// <summary>
    /// 获取客户消息(客户问题)
    /// </summary>
    /// <param name="uId"></param>
    /// <returns></returns>
    [WebMethod]
    public Message[] UpdateCustomerMessage(int uId)
    {
    Message[] messages = null;
    System.Data.DataSet ds = null;
    DB db = null;
    int messageCount = 0;
    Message aMessage;
    string sqlCmd = "Exec UP_GetCustomerMessages " + uId.ToString();
    try
    {
    db = new DB();
    ds = db.GetDataSet(sqlCmd);
    messageCount = ds.Tables[0].Rows.Count;
    if(messageCount>0)
    {
    messages = new Message[messageCount];
    for(int i = 0;i<messageCount;i++)
    {
    //mid,sourceUid,releaseDateTime,content
    System.Data.DataRow r = ds.Tables[0].Rows[i];
    aMessage = new Message();
    aMessage.mId = Convert.ToInt32(r["mid"].ToString());
    aMessage.sUId = Convert.ToInt32(r["sourceUid"].ToString());
    aMessage.sUName = r["sourceName"].ToString();
    aMessage.releaseDateTime = r["releaseDateTime"].ToString();
    aMessage.dUId = 0;
    aMessage.dUName = "";
    aMessage.content = r["content"].ToString();
    messages[i] = aMessage;
    }
    }
    }
    catch(Exception ex)
    {

    }
    finally
    {
    if(ds!=null)
    ds.Dispose();
    ds = null;
    if(db!=null)
    db.Dispose();
    db = null;
    }
    return messages;
    }
      

  2.   

    续上 /// <summary>
    /// 获取客户端信息 根据信息ID
    /// </summary>
    /// <param name="mId"></param>
    /// <returns></returns>
    [WebMethod]
    public Message[] GetCustomerMessage(int mId)
    {
    Message[] messages = null;
    System.Data.DataSet ds = null;
    DB db = null;
    int messageCount = 0;
    Message aMessage;
    string sqlCmd = "Exec UP_GetCustomerMessageById " + mId.ToString();
    try
    {
    db = new DB();
    ds = db.GetDataSet(sqlCmd);
    messageCount = ds.Tables[0].Rows.Count;
    if(messageCount>0)
    {
    messages = new Message[1];
    int i = 0;
    //mid,sourceUid,releaseDateTime,content
    System.Data.DataRow r = ds.Tables[0].Rows[i];
    aMessage = new Message();
    aMessage.mId = Convert.ToInt32(r["mid"].ToString());
    aMessage.sUId = Convert.ToInt32(r["sourceUid"].ToString());
    aMessage.sUName = r["sourceName"].ToString();
    aMessage.releaseDateTime = r["releaseDateTime"].ToString();
    aMessage.dUId = 0;
    aMessage.dUName = "";
    aMessage.content = r["content"].ToString();
    messages[i] = aMessage;
    }
    }
    catch(Exception ex)
    {

    }
    finally
    {
    if(ds!=null)
    ds.Dispose();
    ds = null;
    if(db!=null)
    db.Dispose();
    db = null;
    }
    return messages; /*
    Message[] messages = new Message[1];
    messages[0].mId = 3;
    messages[0].sUId = 11;
    messages[0].sUName = "客户003";
    messages[0].dUId = 0;
    messages[0].dUName = "";
    messages[0].releaseDateTime = DateTime.Now.ToString("yyyy/MM/dd", System.Globalization.DateTimeFormatInfo.InvariantInfo);
    messages[0].content = "你好!";
                return messages;
    */
    }
    [WebMethod]
    public Customer CustomerLogin(string email)
    {
    DB db = null;
    Customer aCustomer = new Customer();
    string sqlCmd = "SELECT emp_id as id,[name] as name"
    + " FROM employee"
    + " where emp_id='"+this.Session["emp_id"].ToString()+"'";
    System.Data.DataSet ds = null;
    try
    {
    db = new DB();
    ds = db.GetDataSet(sqlCmd);
    if(ds.Tables[0].Rows.Count>0)
    {
    int i = 0;
    //mid,sourceUid,releaseDateTime,content
    System.Data.DataRow r = ds.Tables[0].Rows[i];
    aCustomer.cId = Convert.ToInt32(r["id"].ToString());
    aCustomer.name = r["name"].ToString();
    }
    }
    catch(Exception ex)
    {

    }
    finally
    {
    if(ds!=null)
    ds.Dispose();
    ds = null;
    if(db!=null)
    db.Dispose();
    db = null;
    }
    return aCustomer;
    } /*
    [WebMethod]
    public Message[] UpdateMessage(int uId)
    {
    Message[] messages = null;
    System.Data.DataSet ds = null;
    DB db = null;
    int messageCount = 0;
    Message aMessage;
    string sqlCmd = "Exec UP_GetAnswerMessage " + uId.ToString();
    try
    {
    db = new DB();
    ds = db.GetDataSet(sqlCmd);
    messageCount = ds.Tables[0].Rows.Count;
    if(messageCount>0)
    {
    messages = new Message[messageCount];
    for(int i = 0;i<messageCount;i++)
    {
    //mid,sourceUid,releaseDateTime,content
    System.Data.DataRow r = ds.Tables[0].Rows[i];
    aMessage = new Message();
    aMessage.mId = Convert.ToInt32(r["mid"].ToString());
    aMessage.sUId = Convert.ToInt32(r["sourceUid"].ToString());
    aMessage.sUName = "Service"+aMessage.sUId.ToString();
    aMessage.dUId = 0;
    aMessage.dUName = "";
    aMessage.content = r["content"].ToString();
    messages[i] = aMessage;
    }
    }
    }
    catch(Exception ex)
    {

    }
    finally
    {
    if(ds!=null)
    ds.Dispose();
    ds = null;
    if(db!=null)
    db.Dispose();
    db = null;
    }
    return messages; int i =2;
    //日期格式 2007/6/16 10:35:26
    Message[] messages = new Message[i];
    messages[0].mId = 1;
    messages[0].sUId = 11;
    messages[0].sUName = "客户001";
    messages[0].dUId = 12;
    messages[0].dUName = "LJ";
    messages[0].releaseDateTime = DateTime.Now.ToString("yyyy/MM/dd", System.Globalization.DateTimeFormatInfo.InvariantInfo);;
    messages[0].content = "你好!";
    messages[1].mId = 2;
    messages[1].sUId = 11;
    messages[1].sUName = "客户001";
    messages[1].dUId = 12;
    messages[1].dUName = "LJ";
    messages[1].releaseDateTime = DateTime.Now.ToString().Replace("-","/");
    messages[1].content = "有什么能帮到您的吗?";
    return messages;

    }
    */ }
    }
      

  3.   

    就是登陆问题,把原来的登陆该一下,但是他用的是.asmx文件里的
    {
      DB db = null;
      Customer aCustomer = new Customer();
      string sqlCmd = "SELECT emp_id as id,[name] as name"
         + " FROM employee"
                  + " where emp_id='"emp_id"+"'";
     System.Data.DataSet ds = null;
       try
    {
    db = new DB();
    ds = db.GetDataSet(sqlCmd);
         if(ds.Tables[0].Rows.Count>0)
    {
     int i = 0; System.Data.DataRow r = ds.Tables[0].Rows[i];
    aCustomer.cId = Convert.ToInt32(r["id"].ToString());
    aCustomer.name = r["name"].ToString();
    }
         }
    catch(Exception ex)
    {

    }
    finally
    {
    if(ds!=null)
    ds.Dispose();
    ds = null;
    if(db!=null)
    db.Dispose();
    db = null;
    }
    return aCustomer;
       }
    这段传的值,
    下面是接值.js页面
    var isCanRequest = true;
    var isNeedUpdate = true;
    var updateTimeInit =2;
    var updateTime = updateTimeInit;
    var uId = "0";
    var uName = "";
    var intervalTimeInit = 3;
    var intervalTime = intervalTimeInit;
    var interval = 800;
    var intervalObject = null;
    var csButtonValue = "Add Message";
    要该动登陆就要该这个接口