Ajax表单在页面加载时发送请求

时间:2011-02-18 02:51:26

标签: php jquery ajax

我是ajax的新手,我认为这是一个小问题。 我想知道是否有人可以帮助我?

问题:

在我的HEAD标签中的index.php文件中,我有以下内容:

<script type="text/javascript">



var time_variable;



function getXMLObject()  //XML OBJECT

{

   var xmlHttp = false;

   try {

     xmlHttp = new ActiveXObject("Msxml2.XMLHTTP")  // For Old Microsoft Browsers

   }

   catch (e) {

     try {

       xmlHttp = new ActiveXObject("Microsoft.XMLHTTP")  // For Microsoft IE 6.0+

     }

     catch (e2) {

       xmlHttp = false   // No Browser accepts the XMLHTTP Object then false

     }

   }

   if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {

     xmlHttp = new XMLHttpRequest();        //For Mozilla, Opera Browsers

   }

   return xmlHttp;  // Mandatory Statement returning the ajax object created

}



var xmlhttp = new getXMLObject();   //xmlhttp holds the ajax object

function ajaxFunction() {

  var getdate = new Date();  //Used to prevent caching during ajax call

  if(xmlhttp) { 

    var name = document.getElementById("name");

    var date1 = document.getElementById("date1");

    var date2 = document.getElementById("date2");


    xmlhttp.open("POST","http://heathrowsafeparking.co.uk/modules/mod_hspbooking/calc_days.php",true); //calling testing.php using POST method

    xmlhttp.onreadystatechange  = handleServerResponse;

    xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

    xmlhttp.send("name=" + name.value + "&date1=" + date1.value + "&date2=" + date2.value);



  }

}



function handleServerResponse() {

   if (xmlhttp.readyState == 4) {

     if(xmlhttp.status == 200) {

       document.getElementById("message").innerHTML=xmlhttp.responseText; //Update the HTML Form element 

     }

     else {

        alert("Error during AJAX call. Please try again"); 

     }

   }

}

</script>

在BODY我有以下内容;提交按钮调用onclick函数:

<form id="hspcalc">

<table width="162" border="0" align="center" cellpadding="2" cellspacing="2" id="quoter" style="width:162px; margin:auto; font-family:verdana; font-size: 12px; background-color:#293a4b; color:#fff;"

>



<tr>

  <td  height="" align="center" valign="top" style="padding-left:;">

    <p style="margin-top:;">

    <img src="http://heathrowsafeparking.co.uk/images/stories/getquote_but.png" border="0"  /><br />

    <div id="message" name="message"></div> 

    Your Name:<br />

      <input name="name" type="text" class="rounded" id="name" />

      <br />

      <br />    Date of Departure:<br />

      <input name="date1" type="text" class="rounded" id="date1" onfocus="showCalendar('',this,this,'','holder1',0,30,1)" value="" />

      <br />

      <br />

      Date of Arrival (Return):<br />

      <input name="date2" type="text" class="rounded" id="date2" onfocus="showCalendar('',this,this,'','holder2',0,30,1)" value="" />    

      <br />

        <input type="button" value="Submit" onClick="ajaxFunction();" />

    </p>

    </td>

</tr>

</table>

</form>

但是,当我通过包含调用index.php文件时,这很有效,例如:

<?php include("modules/mod_hspbooking/index.php"); ?>

...我发现似乎是提交(调用函数)onload的页面,而不是等待用户单击提交按钮。

我似乎无法找到解决方案,如果有人可以快速查看并提供任何建议,我将不胜感激。 请访问此URL以了解操作中的问题(右侧阅读“不幸的是,我们是......”)。这应该显示表单,等待用户输入并单击提交按钮。

http://heathrowsafeparking.co.uk

要查看单独运行且运行良好的表单(即不通过include调用),请访问此处:

http://heathrowsafeparking.co.uk/modules/mod_hspbooking/index.php

作为参考,我的“calc_days.php”文件的结束行回显了一个用户的消息,该消息显示在名为“message”的div中:

提前感谢您的任何帮助和支持。

此致

汤姆

2 个答案:

答案 0 :(得分:0)

这似乎不是一个ajax问题,从第一个链接加载页面后没有请求,所以你假设它是自动提交是一个错误。您应该查看您的PHP代码,以检查模块如何确定表单是否已提交,因为它似乎始终在嵌入时遵循该代码路径。

您还应该为php标记您的问题。

更新:看过更多的代码后,问题就变成了Joomla模块的配置,而且确实是服务器端。

答案 1 :(得分:-1)

使用jQuery将事件附加到对象上,如:

$(document).ready(function(){

$('#ElementName')。click(function(){....你AJAX CALL HERE ...});

});