本帖最后由 superfans98 于 2010-08-16 18:29:22 编辑

解决方案 »

  1.   

    很明显input没有innerHTML属性,
    所以用<div>比较好
      

  2.   

    你改成下面这样就可以了。
    <input type="text" id="keywords"/><div id="keywords_txt"></div>document.getElementById("keywords_txt").innerHTML=keywords;
      

  3.   

    不是啊。我input接收的时候,是用的value,不是innerhtml
    因为这个返回结果是允许修改的,所以用div不太合适。
      

  4.   

    试试这样
    <input type="text" id="keywords" value=""/>
    document.getElementById("keywords").value=keywords;
      

  5.   


    <input type="text" id="keywords"/><div id="keywords_txt"></div>document.getElementById("keywords_txt").innerHTML=keywords;
    这样,它同样提示 对象不支持此属性或方法你这个表单的代码如果把  <input type="text" id="keywords"/>  这一句去掉,就正常了。但还是div接收,不是input了。
      

  6.   


    这样也是这种错误提示,我先前测试过了。刚才又测试一遍(在我以前的基础上加了你的value=""),还是那个错误提示。错误提示指向了46行: <input type="text" name="title" id="title" value="" onBlur="keywords()" />这个就是开始调用ajax函数的语句。发生在标题栏失去焦点的时候。
      

  7.   

    你的浏览器清除缓存试试,好像是document.getElementById("keywords")没有获取到正确的元素,所以导致异常,可能是缓存的问题,id应该没有重复吧?
      

  8.   

    ID没有重复。我也感觉挺奇怪呢。因为我PHP刚学习不到一个月,所以怕我代码有问题,经过一下午的努力无果,只好来麻烦大家。我清下缓存试一下。谢谢。
      

  9.   

    清缓存还是一样。我还是把全部代码都贴 上来吧。
    其中包含ajax的定义实例化。
    <script language="javascript">
     function createXMLHttp()
     { 
      var request;
      var browser=navigator.appName; 
      if(browser=="Microsoft Internet Explorer")

      request=new ActiveXObject("Microsoft.XMLHttp");
      return request;
      }
    else

      request=new XMLHttpRequest();
      return request;
      }
     }
     var xhr=createXMLHttp(); 
     function keywords()
     {
      var url="keywords.php"; 
    // url=encodeURI(url);
    var poststr="title="+form1.title.value+"&content="+form1.content.value;
      xhr.open("POST",url,true); 
        xhr.setRequestHeader("Content-Length",length);
    xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
      xhr.onreadystatechange=getkeywords; 
      xhr.send(poststr); //将请求发送
     }
     function getkeywords()
     {
      if(xhr.readyState==4)

      var keywords = xhr.responseText; 
                //下面这一行,是我用input接收ajax返回的数据时使用的方法。老是提示不支持属性或方法
      document.getElementById("keywords").value=keywords;
                //下面这一行,是我用div接收ajax返回的数据时使用的方法,一切正常。
      document.getElementById("keywords").innerHTML=keywords;
      }
     }
    </script>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    </head>
    <body style="text-align:center" onLoad="form1.title.focus()">
    <form name="form1">
    <input type="text" name="title" id="title" size="60" value="" onBlur="keywords()" />
    <p><textarea id="content" name="content" cols="60" rows="20" onBlur="keywords()">

    </textarea></p>用input接收返回的数据,用这一行,提示错误不支持属性方法
    <input type="text" id="keywords" value="" />
    用div接收返回的数据,一切正常。
    <!--<div id="keywords"></div>       -->
    </form>
    </body>
    </html>这是全部代码了。ID也没有重复。麻烦给看下。
      

  10.   

    麻烦CunningBoy了,我老婆怀孕,我先去给她做饭。然后回来。谢谢。
      

  11.   

    <script>中的代码放到<head>中间去,保证HTMl元素都被加载了,获取的时候不会出问题。
      

  12.   

    还有,我的浏览器是IE8,我用IE6也试过了。都是一样的错误。
    错误行:<input type="text" name="title" id="title" size="60" value="" onBlur="keywords()" />
      

  13.   

    我放head中间,还是一样的情况。
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <script language="javascript">
     function createXMLHttp()
     { 
      var request;
      var browser=navigator.appName; 
      if(browser=="Microsoft Internet Explorer")

      request=new ActiveXObject("Microsoft.XMLHttp");
      return request;
      }
    else

      request=new XMLHttpRequest();
      return request;
      }
     }
     var xhr=createXMLHttp(); 
     function keywords()
     {
      var url="keywords.php"; 
    // url=encodeURI(url);
    var poststr="title="+form1.title.value+"&content="+form1.content.value;
      xhr.open("POST",url,true); 
        xhr.setRequestHeader("Content-Length",length);
    xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
      xhr.onreadystatechange=getkeywords; 
      xhr.send(poststr); //将请求发送
     }
     function getkeywords()
     {
      if(xhr.readyState==4)

             var keywords = xhr.responseText; 
    //下面这一行,是我用input接收ajax返回的数据时使用的方法。老是提示不支持属性或方法
    document.getElementById("keywords").value=keywords;
    //下面这一行,是我用div接收ajax返回的数据时使用的方法,一切正常。
    //document.getElementById("keywords").innerHTML=keywords;
      }
     }
    </script>
    </head>
    <body style="text-align:center" onLoad="form1.title.focus()">
    <form name="form1">
    <input type="text" name="title" id="title" size="60" value="" onBlur="keywords()" />
    <p><textarea id="content" name="content" cols="60" rows="20" onBlur="keywords()">

    </textarea></p>
    <!--用input接收返回的数据,用这一行,提示错误不支持属性方法-->
    <input type="text" id="keywords" value="" />
    <!--用div接收返回的数据,一切正常。-->
    <!--<div id="keywords"></div>       -->
        </form> </form>
    </body>
    </html>
      

  14.   

        <input type="text" name="title" id="title" size="60" value="" onBlur="keywords()" />
        <p><textarea id="content" name="content" cols="60" rows="20" onBlur="keywords()"> function keywords()函数名改了或者
    <input type="text" id="keywords" value="" />  
    document.getElementById("keywords").value=keywords; 这两处id改了先试试
      

  15.   

    修改了id名称,删除了注释,可以了
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
        <script language="javascript">
                function createXMLHttp(){
                    var request;
                    var browser = navigator.appName;
                    if (browser == "Microsoft Internet Explorer") {
                        request = new ActiveXObject("Microsoft.XMLHttp");
                        return request;
                    }
                    else {
                        request = new XMLHttpRequest();
                        return request;
                    }
                }
                
                var xhr = createXMLHttp();
                function sendQuery(){
                    var url = "keywords.php";
                    var poststr = "title=" + form1.title.value + "&content=" + form1.content.value;
                    xhr.open("POST", url, true);
                    xhr.setRequestHeader("Content-Length", length);
                    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
                    xhr.onreadystatechange = getkeywords;
                    xhr.send(poststr); //将请求发送
                }
                
                function getkeywords(){
                    if (xhr.readyState == 4) {
                        var keywords = xhr.responseText;
    alert(keywords);
                        //下面这一行,是我用input接收ajax返回的数据时使用的方法。老是提示不支持属性或方法
                        document.getElementsByTagName('input')[1].value = keywords;
                        //下面这一行,是我用div接收ajax返回的数据时使用的方法,一切正常。
                        //document.getElementById("keywords").innerHTML=keywords;
                    }
                }
        </script>
    </head>
    <body style="text-align:center" onLoad="form1.title.focus()">
        <form name="form1">
         <table>
            <tr><td><input type="text" name="title" id="title" size="60" value="" onBlur="sendQuery();"/></td></tr>
            <tr><td><textarea id="content" name="content" cols="60" rows="20" onBlur=""></textarea></td></tr>
    <tr><td><input type="text" id="kw" name="kw" value="" size="60"/></td></tr>
    </table>
        </form>
    </body>
    </html>
      

  16.   

    document.getElementsByTagName('input')[1].value = keywords;换成document.getElementById('kw').value = keywords;也是可以的
      

  17.   

    谢谢。改掉ID后好了。ID和函数名重复了还不行?刚学php做网页,JS更是不懂。都是先查如何实现,再去消化代码。我这里太落后了,最大的书店里买不到php的基础书,从网上下了本电子书,是2002年出版的。谢谢热心朋友的帮助。