jQuery .keyup()函数

3
我没有从这段代码中接收到任何输出。可能出现了什么错误。
终端.html
<html>
<head>
<link href="/css/webterminal.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery-1.5.2.js"/>
<script type="text/javascript">
function shell_execute(str) {     
  $.ajax({
    url: 'exec.php',
    dataType: 'text',
    data: {
      q: str
    },
    success: function (response) {
      $('#txtOut').append(response);

  });
}
</script>
</head
<body">
    <div class="container">

    <h2>UNIX Web Based Terminal 1.0</h2>
        <br />
    <p><b>output</b></p>
<form>
<span id="User"></span>< <input type="text" id="txtcmd" onkeyup="shell_execute(this.value)" class="textbox" size="20" />
</form>
<div class="output">
<p><span id="txtOut"></span></p>

    </div>
</div>
</body>
</html>

exec.php

<?php

$q=$_GET["q"]; 
$output=shell_exec($q);
echo "<pre>$output</pre>";
?>

您的URL与您列出的文件名不匹配...是打错字了吗?另外,我们能看到您的HTML的其余部分吗?您绑定到哪个输入元素? - kafuchau
1
在您的标题中提到了 .keyUp() 函数。是该函数没有被触发,还是 ajax 调用没有响应? - Richard Tuin
我认为在原帖中继续讨论这个话题会更容易,而不是另起一篇新的。 - Yoshi
你知道你的闭合头标记没有正确关闭吗? - Mark Schultheiss
5个回答

3
你需要从文本输入框中获取值,并在将其传递到脚本之前放入 str 中。
例如:
 var str = $("#txtcmd").val();

2

替代

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

像这样关闭您的脚本标签:

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

像这样关闭标签会有什么影响? - Naveed Butt
@Naveed Butt - 由于某种原因,这是确保它始终正确捕获脚本的必需语法。如果不这样做,脚本将无法正常运行。 - Mark Schultheiss

2

我相信这不是你的问题,但我建议将 onkeyup="shell_execute(this.value)" 从标记中移除,并在脚本部分放入jQuery事件处理程序:

$("#txtcmd").keyup(function(){
  shell_execute($(this).val());
});

2
在 terminal.html 中,str 是用来干什么的?你需要传入一些值才能得到输出结果。尝试使用 echo $_GET['q']; 命令,就可以知道了。

你什么时候会调用shell_execute()函数? - kafuchau

1

我知道这是一个旧帖子,但这也是问题所在。

function shell_execute(str) {     
  $.ajax({
    url: 'exec.php',
    dataType: 'text',
    data: {
      q: str
    },
    success: function (response) {
      $('#txtOut').append(response);
     } <------------ You were missing this.
  });
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接