Ajax форма отправки запроса при загрузке страницы - PullRequest
0 голосов
/ 18 февраля 2011

Я новичок в ajax и у меня возникла небольшая проблема.Мне было интересно, сможет ли кто-нибудь помочь мне?

Проблема:

В моем файле index.php в теге HEAD у меня есть следующее:

<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>

В теле у меня есть следующее;кнопка submit вызывает функцию 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"); ?>

... iнайти то, что кажется страницей, отправляющей (вызывающей функцию) onload, вместо того, чтобы ждать, пока пользователь нажмет кнопку отправки.

Кажется, я не могу найти решение и буду признателен, если кто-нибудь сможетиметь быстрый взгляд и предоставление любых рекомендаций.Пожалуйста, посетите этот URL для обнаружения проблемы в действии (справа, читая «к сожалению, мы ...»). Это должно отобразить форму, ожидая ввода пользователя и нажатия кнопки отправки.

http://heathrowsafeparking.co.uk

Чтобы увидеть, что форма работает автономно и работает хорошо (т.е. без звонка через включение), пожалуйста, посетите здесь:

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

Для справки: закрывающая строка моего файла "calc_days.php" отображает сообщение для пользователя, которое отображается в div с именем "message":

Заранее благодарен за любую помощь и поддержку.

С уважением

Том

Ответы [ 2 ]

0 голосов
/ 18 февраля 2011

Похоже, что это не проблема ajax, после загрузки страницы по первой ссылке запрос не возникает, поэтому ваше предположение, что она автоматически отправляется, является ошибкой. Вы должны проверить свой php-код, чтобы проверить, как модуль определяет, была ли отправлена ​​форма, поскольку при внедрении он всегда следует этому пути кода.

Вы также должны пометить свой вопрос для php.

Обновление: увидев еще немного кода, проблема оказалась в конфигурации модуля Joomla и действительно была на стороне сервера.

0 голосов
/ 18 февраля 2011

Используйте jQuery, чтобы прикрепить событие к объекту, например:

$ (документ) .ready (function () {

$ ('# ElementName'). Click (function () {.... Вы AJAX ЗВОНИТЕ ЗДЕСЬ ...});

});

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...