忘了说,WebServer端是我自己写的,所以,只能以二进制或字符串方式发送数据,不支持XMLHTTP类的技术....我只是想用Javascript在不刷屏的情况下与WebServer交互....

解决方案 »

  1.   

    iframe不好!建议使用xmlhttp,这个才是真正的无刷新,程序也是单线式的Example
    The following script example posts a DOMDocument to an Active Server Page (ASP) on a server and returns the result as a new XML document.HTML File (form.htm)<HTML>
    <HEAD>
    <SCRIPT LANGUAGE="VBScript">
    Function onLoad()
       Dim mydata, pi
       Set mydata = CreateObject("Msxml2.DOMDocument.4.0")
       Set pi = mydata.createProcessingInstruction("xml", "version='1.0' encoding='UTF-8'")
       mydata.insertBefore pi, mydata.firstChild
    End function
    Function sendInfo()
       Dim MyHttp
       'Do validation of input data before sending it.
       If(Not(customerName.value = ""))   then
          With MyData.documentElement
             .getElementsByTagName("Name").item(0).text = customerName.value
             .getElementsByTagName("Phone").item(0).text = customerPhoneNum.value
          End With
          Set MyHttp=CreateObject("Msxml2.XMLHTTP.4.0")
          MyHttp.open "POST", "http://localhost/httpreqserver.asp", False
          'Simulate message sent by a custom user agent.
          MyHttp.setRequestHeader "User-Agent", "MyCustomUser"
          MyData.async = False
          MyHttp.send mydata.XMLDocument
          Document.Write MyHttp.responseText
       Else
          Document.Write "Invalid data."
       End If
    End function
    </SCRIPT>
    </HEAD>
    <BODY LANGUAGE="JScript" ONLOAD="Return onLoad()">
    <TABLE BORDER="2" ALIGN="center">
    <TR><TD WIDTH="150" ALIGN="center">
       <LABEL>Name</LABEL>
       </TD><TD>
       <INPUT NAME="customerName" TYPE="EDIT"/>
    </TD></TR>
    <TR><TD WIDTH="150" align="CENTER">
       <LABEL>Telephone number</LABEL>
       </TD><TD>
       <INPUT NAME="customerPhoneNum" type="EDIT"/>
    </TD></TR>
    </TABLE>
    <TABLE ALIGN="CENTER">
       <TR><TD WIDTH="150" ALIGN="CENTER">
          <INPUT TYPE="BUTTON" VALUE="Send Information" ALIGN="CENTER" ONCLICK="sendInfo()"/>
       </TD></TR>
    </TABLE>
    </BODY>
    </HTML>
    <XML id="MyData">
    <MyStructure>
       <Name/>
       <Phone/>
    </MyStructure>
    </XML>
    ASP File (httpreqserver.asp)<%@LANGUAGE="Jscript"%>
    <%
       Response.Expires = -1000;
       // Load the posted XML document.
       var doc = Server.CreateObject("Msxml2.DOMDocument.4.0");
       doc.async=false; 
       doc.load(Request);
       var result = Server.CreateObject("Msxml2.DOMDocument.4.0");
       // Now process the order and build the result document.
       var userAgent = Request.ServerVariables("HTTP_User-Agent");
       var OutputString="Data for "+
             doc.documentElement.childNodes.item(0).text +
             " (" + doc.documentElement.childNodes.item(1).text +
             ") added";
       Response.ContentType = "text/xml";
       if(userAgent == "MyCustomUser")
       {
          result.loadXML("<result>" + OutputString +" </result>");
          var pi = result.createProcessingInstruction("xml", "version='1.0'");
          result.insertBefore( pi, result.firstChild);
          result.save(Response);      
       }
       else
       {
          Response.Write("<P><B>" + OutputString+" </B></P>");
       }
    %>
    Try It!
      

  2.   

    你自己写的webserver 自己会不了解http协议吗?? xmlHTTP协议在get模式下跟普通http协议完全一样,即使要实现post接口也很容易,就是直接把二进制数据流转换成iso8859-1写入dom即可...
      

  3.   

    楼上的老大,下面的是ASP呀,我的WebServer是自己用WinSockAPI写的,什么对象也没有呀,这个程序必须要用自己写的WebServer,不能用IIS,所以,只能自己分析JavaScript或提交时发送到WebServer的数据,处理后,再传回,上面的代码不行吧!现在的问题就是用HTML可以提交,也可以反馈数据(就是最标准也是最原始的HTML),不过,我想不刷屏的情况下完成... 那位可以帮帮我?      :)
      

  4.   

    @_@不好意思,我是高层开发,没有做到协议层那么NB,呵呵,做高层的WebServer都搞得头大了,还谈做协议层的?杀了我算了吧!   :)
      

  5.   

    sample.html:<script language="JavaScript" id="k"></script>
    <script language="JavaScript">
    function kReload() {
      k.src="http://127.0.0.1/k.js";
    }
    </script>
    <body>
    <a href="javascript:kReload();">Click Here</a>
    </body>
    ====================
    k.js:alert('Reloaded!');
      

  6.   

    为什么我的信誉分这么低呢
    什么地方不对劲
    除了按时结贴还有规定?
    纳闷ing...
      

  7.   

    这个法子不行呀,不能运行alert('Reloaded!');就算可以,这也只能不刷新更新呀,不能发送...看来只用用JavaApple了!   @_@
      

  8.   

    奇怪了
    我这怎么可以
    其他人试试我只是给你一个思路
    刷新发送只要控制那个id为"k"的<script></script>就可以了理论上没什么问题吧
      

  9.   

    你可以用javascript 写cookie
    在你的Webserver读取
    客户端读取返回值,可以采用 setTimeOut("ReadPara()",1000); 读取webserver写入的cookie值。
      

  10.   

    实在是不想用JAVA,[其实是Java没学到家,用起来没那么顺手!  :)   ]那位还有没有更好的办法?希望能给出代码! 谢谢大家了,问题一解决就结帐!这两天很忙,没时间泡CSDN,那位要有什么问题就发在这里好了,我看见了会尽快回复...
      

  11.   

    建议使用XML加soap协议,
    通过XML和控件绑定,然后通过soap协议向服务器发送xml文件,然后在从服务器返回XML文件
      

  12.   

    见 http://expert.csdn.net/Expert/topic/2633/2633401.xml?temp=.5958979例子
      

  13.   

    再声明一下,我是自己用VB调用Win32 WinSockAPI写的WebServer,不能响应一些高级的协议,因为WinSockAPI是M$封装好了的,所以,只能做标准的Http1.1响应.不知道那位有比较好的方法可以在浏览器端实现不刷屏连续的接收和发送数据(二进制/本文)要效果很好的,最好还可以做CRC效验和发送前Base64编码.见过一个做的很好的,不过是用的Java.上面的例子我都看了,没有非常可靠的,如果在服务器没有正确响应一端时间后再连接就不行了谢谢各位了!     :)
      

  14.   

    使用隐藏frame与服务器联系,取得数据放在隐藏frame,当前frame从隐藏frame中取数据
      

  15.   

    从服务器端取值并更回填到页面(showModelessDialog方式)
    http://jkisjk.vip.sina.com/html/getDataFromServer.htm