我刚刚开始使用AJAX。我正在尝试创建一个测试,我在文本输入框中输入一些文本,单击表单上的提交按钮,并在我的页面上显示该文本。我得到的即时错误是404错误(www.mysite.com/ajaxFunction()),但我确信还有其他人尚待发现。谁能帮助我纠正这个让我开始使用AJAX?我正在试着开始转动我的车轮。另外,请注意我正在调用PHP脚本,因为这是我的最终目标所需要的,这就是为什么我不仅仅使用JavaScript本身。谢谢!
这是html:
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
</head>
<body>
<script language="javascript" type="text/javascript">
<!--
//Browser Support Code
window.onload = function ajaxFunction() {
document.myform.action = getFeedback();
}
function getFeedback() {
var xmlhttp;
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("feedback").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","scripts/handle_feedback.php",true);
xmlhttp.send();
}
//-->
</script>
<div id="leftsidebox"></div>
<div id="textboxdiv">
<form name="myform">
Text Here: <input type="text" name="textbox" id="name" />
<button type="submit">Submit</button>
</form>
</div>
<div id="feedback">
</div>
</body>
</html>
handle_feedback.php
<?php
$mytext = $_REQUEST['textbox'];
return $mytext;
?>
编辑:这是我最新的HTML代码。我对php进行了更改(将'return'切换为'echo')
<script language="javascript" type="text/javascript">
<!--
//Browser Support Code
window.onload = function ajaxFunction() {
document.myform.onsubmit = getFeedback;
}
function getFeedback() {
var xmlhttp;
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("feedback").innerHTML=xmlhttp.responseText;
}
}
var textvalue = document.getElementById("name").value;
xmlhttp.open("GET","scripts/handle_feedback.php?textbox="+textbox,true);
xmlhttp.send();
}
//-->
</script>
<div id="textboxdiv">
<form name="myform">
Text Here: <input type="text" name="textbox" id="name" />
<button type="submit">Submit</button>
</form>
</div>
<div id="feedback">
</div>
脚本/ handle_feedback.php
<?php
$mytext = $_REQUEST['textbox'];
echo $mytext;
?>
答案 0 :(得分:2)
应该{{1}}而不是echo
。函数中使用return
来返回数据。
return
此外,您必须将参数发送到php文件
<?php
$mytext = $_REQUEST['textbox'];
echo $mytext;
?>
答案 1 :(得分:2)
这不会做你期望它做的事情:
document.myform.action = getFeedback();
您可能希望在提交表单时调用getFeedback
。事实并非如此。当浏览器尝试运行该代码时,它会意识到:“哦,嘿,我们正在分配action
。但等等,在右侧,有一个函数调用!我必须评估该函数调用,以便找到将action
设置为的返回值!“因此,您的浏览器会立即尽职地调用getFeedback
。由于getFeedback
不会返回任何内容,因此会将action
设置为undefined
。男孩,这很有帮助。
如果我们希望在提交表单时调用JavaScript函数,则设置action
不是正确的方法。那么正确的方法是什么? 事件监听器。附加事件监听器的最常用方法是使用addEventListener
,但由于您的用例相当简单,我们将使用更简单,经常被忽略的方式:设置onsubmit
:
document.myform.onsubmit = getFeedback;
请注意,我们不在getFeedback
之后有括号。这是故意的。我们希望将onsubmit
设置为getFeedback
函数本身,而不是其返回值。
您还在使用textbox
而未定义它。当然,它存在于文档中,但这并不意味着它是脚本中可用的变量。要访问它,您需要首先获取元素,然后获取该元素的值:
document.getElementById('name').value
可能让你获得的另一件事是相同的原产地政策。不要使用open
的完整网址,只需传递相对网址:
xmlhttp.open("GET", "something.php" /* ... */, true);
答案 2 :(得分:1)
第一点:您错过了客户端的请求参数。
在查询字符串中发送参数以获取GET请求。
var textvalue = document.getElementById("name").value;
xmlhttp.open("GET","scripts/handle_feedback.php?textbox="+textvalue ,true);
了解更多参考资料read here。
第二点是:
' return '语句与函数/方法一起使用。由于您在此处没有任何功能,因此请使用“回显”或“打印”语句。
<?php
$mytext = $_REQUEST['textbox'];
echo $mytext;
?>