欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

W3School里的一个错误(读者谨防被它的写法误导)

程序员文章站 2022-04-12 21:28:47
  今天同事拿了一段代码让我看,说为什么他代码照着W3School写的,效果怎么出不来,   他看的是W3School里的jQue...

 

今天同事拿了一段代码让我看,说为什么他代码照着W3School写的,效果怎么出不来,

 

他看的是W3School里的jQuery ajax - post() 方法的官方教程,

 

网址是这个:https://www.w3school.com.cn/ajax/ajax_asp_php.asp

 

点击“亲自试一下源代码”链接就可以过去执行代码查看效果,确实效果没问题

 

里面的代码大致如下:

 

<script type="text/javascript" src="/jquery/jquery.js"></script>

<script type="text/javascript">

$(document).ready(function(){

  $("input").keyup(function(){

    txt=$("input").val();

    $.post("/jquery/gethint.asp",{suggest:txt},function(result){

      $("span").html(result);

    });

  });

});

</script>

 

<p>请在下面的输入框中键入一个名字(a 到z 的字符):</p>

名字:<input type="text"/>

<p>建议:<span></span></p>

但我同事犯了一个错误,直接在本地手动建了这个asp文件,然后双击那个html文件运行,这样如何能解析asp文件里的数据;

 

我部署到IIS上后一直显示"no suggestion",于是查看了下asp文件,

 

尼玛,这不是误导读者吗,里面清清楚楚的写了:

 

'获得来自URL 的q 参数

q=ucase(request.querystring("q"))

调用的时候参数q在哪(上面红色标识出来的),莫非我孤陋寡闻,这样也可以?

 

正当我怀疑自己的时候,发现他在其他地方用原生Ajax写的时候用的是get方式带了参数,

 

function showHint(str)

{

var xmlhttp;

if (str.length==0)

  {

  document.getElementById("txtHint").innerHTML="";

  return;

  }

if (window.XMLHttpRequest)

  {// code for IE7+, Firefox, Chrome, Opera, Safari

  xmlhttp=new XMLHttpRequest();

  }

else

  {// code for IE6, IE5

  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

  }

xmlhttp.onreadystatechange=function()

  {

  if (xmlhttp.readyState==4 && xmlhttp.status==200)

    {

    document.getElementById("txtHint").innerHTML=xmlhttp.responseText;

    }

  }

xmlhttp.open("GET","gethint.asp?q="+str,true);

xmlhttp.send();

}

所以,敢说他没写错?

 

你有何见解?欢迎指教,谢谢!

 

 

 

上面的代码修改成这样就是OK的:

 

$.post("gethint.asp",{"q":txt},function(result){

    $("span").html(result);

});

同时asp文件里的querystring最好修改成:q=ucase(request.form["q"]);

 

 

 

或者直接用get方式嘛:

 

$.get("gethint.asp?q="+txt,function(result){

       $("span").html(result);

});

 

作者  peter cheng