0

在过去的 5 个小时里,我一直在试图避免发布此内容,但我只是找不到此代码的错误所在。我希望在不离开 HTML 页面的情况下向电子邮件发送评论,而只是在表单底部添加 PHP 回显。这是我的 HTML:

<form name="form1" method="post" enctype="multipart/form-data" action="javascript:submitForm();">
<table>
<tr>
<td valign="top">
<label for="first_name">First Name *</label>
</td>
<td valign="top">
<input  type="text" name="first_name" maxlength="50" size="30">
</td>
</tr>
<tr>
<td valign="top">
<label for="last_name">Last Name *</label>
</td>
<tr>
<td valign="top">
<label for="email">Email Address *</label>
</td>
<td valign="top">
<input  type="text" name="email" maxlength="80" size="30">
</td>
</tr>
<tr>
<td valign="top">
<input  type="text" name="telephone" maxlength="30" size="30">
</td>
</tr>
<tr>
<td valign="top">
<label for="comments">Comments *</label>
</td>
<td valign="top">
<textarea  name="comments" maxlength="1000" cols="25" rows="6"></textarea>
</td>
</tr>
<tr>
<td colspan="2" style="text-align:center">
<input type="submit" value="Submit"> 
</td>
</tr>
</table>
</form>

<div id="text"> </div>

我的 AJAX:

function submitForm(str)
{
if (str=="")
  {
  document.getElementById("text").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("text").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","contact.php?q="+str,true);

xmlhttp.send();
}

我可以确认我的 php 工作正常,因为当我将表单操作更改为“contact.php”时,它工作得很好。问题是当我尝试使用 AJAX 获取 php 时,firefox 开发人员工具确认使用以下函数可以正常调用 contact.php:submitForm() 但它只是无法正常工作。有人可以帮忙吗?

4

1 回答 1

0

一个问题是:“contact.php?q="+str

根据上面的标记,str 将始终未定义,因此您永远不会将表单数据发送到contact.php。此外,当您设置 action="contact.php" 进行测试时,您使用的是 POST,而您的 ajax 调用是 GET。所以你仍然可能遇到 PHP 脚本的问题。

于 2013-06-11T01:00:15.173 回答