2013-05-31 2 views
0

Каждый раз, когда я нажимаю кнопку отправки, страница перенаправляется.Перенаправление при отправке?

Как я могу настроить его, чтобы страница не перенаправлялась, и она запускает код на стороне сервера, оставаясь на текущей странице и повторяя выше моей формы?

HTML код:

<form name="contact_form" method="post" action="mail.php"> 
<table border="0"> 
<tbody class="Form"> 
<tr> 
<td> 
<label for="NameInput">Your Name:<font color="#FF0000">*</font></label> 
<input autofocus="autofocus" placeholder="John Doe" id="NameInput" name="NameInput" required="required" /> 
</td> 
</tr> 
<tr> 
<td> 
<label for="CompanyName">Your Company:<font color="#FF0000">*</font></label> 
<input required="required" placeholder="Warner bros." id="CompanyName" name="CompanyName" /> 
</td> 
</tr> 
<tr> 
<td> 
<label id="PhoneNumber" name="PhoneNumber">Phone: </label> 
<input placeholder="888-888-8888" id="PhoneNumber" name="PhoneNumber"/> 
</td> 
</tr> 
<tr> 
<td> 
<label id="Email" name="Email">Email:<font color="#FF0000">*</font></label> 
<input required="required" placeholder="[email protected]" id="Email" name="Email" type="email" /> 
</td> 
</tr> 
<tr> 
<td> 
<label for="Website">Website: </label> 
<input placeholder="https://" id="Website" name="Website" /> 
</td> 
</tr> 
</tbody> 
</table> 
<br/> 
<br/> 
<br/> 
<br/> 

<p><strong>What interests you, broadly speaking?</strong></p> 
<br/> 

<p><input id="WebDesignCheckbox" name="WebDesignCheckbox" type="checkbox">Web Design/Development</input></p> 

<input id="SocialMediaCheckbox" name="SocialMediaCheckbox" type="checkbox">Social Media</input> 
> 
<input id="MobilePresence" name="MobilePresence" type="checkbox">Mobile Presence</input> 

<input id="OnlineAdvertising" name="OnlineAdvertising" type="checkbox">Online Advertising</input> 

<input id="SEOCheckbox" name="SEOCheckbox" type="checkbox">Search Engine Optamization</input> 

<p><input id="ecommerceCheckbox" name="ecommerceCheckbox" type="checkbox" >eCommerce</input></p> 

<br/> 


<label for="comments">Your Ideas to Life?</label><br/> 
<textarea placeholder="How can we help you?" id="comments" name="comments" style="margin: 2px; height: 137px; width: 437px;"></textarea></td></tr><br/> 
<tr> 
<td><input type="submit" id="Submit" name="Submit" value="Submit" align="middle" /></td> 
</tr> 
<p id="req-field-desc"><span class="required">*</span> indicates a required field</p> 
</form> 

PHP скрипт mail.php:

<?php 
if(isset($_POST)){ 

    //form validation vars 
    $formok = true; 
    $errors = array(); 

    //sumbission data 
    $ipaddress = $_SERVER['REMOTE_ADDR']; 
    $date = date('d/m/Y'); 
    $time = date('H:i:s'); 

    //form data 
    $NameInput = $_POST['NameInput'];  
    $CompanyName = $_POST['CompanyName']; 
    $PhoneNumber = $_POST['PhoneNumber']; 
    $Email = $_POST['Email']; 
    $Website = $_POST['Website']; 
    $WebDesignCheckbox = $_POST['WebDesignCheckbox']; 
    $SocialMediaCheckbox = $_POST['SocialMediaCheckbox']; 
    $MobilePresence = $_POST['MobilePresence']; 
    $OnlineAdvertising = $_POST['OnlineAdvertising']; 
    $SEOCheckbox = $_POST['SEOCheckbox']; 
    $ecommerceCheckbox = $_POST['ecommerceCheckbox']; 
    $comments = $_POST['comments']; 

    //form validation 
    if(empty($NameInput)){ 
     $formok - false; 
     $errors[] = "You have not entered a name."; 
    } 

    if(empty($CompanyName)){ 
     $formok = false; 
     $errors[] = "You have not entered a company name."; 
    } 

    if(empty($Email)){ 
     $formok = false; 
     $errors[] = "You have not entered an email address."; 
    } 

    //send email if checks out 
    if($formok){ 
     ini_set("sendmail_from","[email protected]"); 
     /*$headers="From: Contact Page: {$Email}" . "\r\n"; 
     $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";*/ 
     $emailbody = " 
     <p>Time: {$time} \n {$date}</p> 
     <p>You are recieving this from your websites contact form.</p> 
     <p><strong>Contacts Name: </strong> {$NameInput}</p> 
     <p><strong>Companys Name: </strong> {$CompanyName}</p> 
     <p><strong>Phone Number: </strong> {$PhoneNumber}</p> 
     <p><strong>Email: </strong> {$Email}</p> 
     <p><strong>Website: </strong> {$Website}</p> 
     <p><strong>Web Design Checkbox: </strong> {$WebDesignCheckbox}</p> 
     <p><strong>Social Media Checkbox: </strong> {$SocialMediaCheckbox}</p> 
     <p><strong>Mobile Presence: </strong> {$MobilePresence}</p> 
     <p><strong>Online Advertising: </strong> {$OnlineAdvertising}</p> 
     <p><strong>SEO Checkbox: </strong> {$SEOCheckbox}</p> 
     <p><strong>eCommerce Checkbox: </strong> {$ecommerceCheckbox}</p> 
     <p><strong>Comments: </strong> {$comments}</p> 
     <p><strong>Extra Data Obtained:</strong>\n Users IPAddress: {$ipaddress}</p> 
     "; 
     mail("[email protected]", "Contacts Page Enquiry", $emailbody); 

     echo('<p style="font-weight: bold; color: #709900"><em>Thank you for contacting doodle Inc., someone will contact you within 48 hours.</em></p>'); 
    } 
} 

Я просто хотел, чтобы получить это, чтобы создать ярлык на верхней части формы говоря: «Спасибо, кто-то свяжутся с вами в течение 48 часов ».

Если кто-то может мне помочь, это было бы замечательно, а также подробное объяснение, чтобы я больше не сталкивался с этой проблемой.

+1

Устанавливается действие формы на mail.php, поэтому он перенаправляется на mail.php при нажатии кнопки отправки. –

+0

Когда вы отправляете форму, нажав кнопку отправки внутри формы, атрибут действия 'action =" mail.php "'перенаправляет вас на указанную страницу как очевидную. – Lion

+0

в порядке, так как я могу заставить его запускать код при его отправке, но не перенаправлять? – Keeano

ответ

1

Дело в том, что у вас есть mail.php как ваше действие для тега формы. вы можете просто оставить это поле пустым, то форма будет размещать на ту же страницу (contact.php)

Чтобы получить функциональные возможности, работая на этой странице, вы можете включить ваш mail.php файл перед формой, так что отображаются ошибки на той же странице. только require("mail.php"); в верхней части кода.

+0

До того, как форма сделает мою форму непригодной? – Keeano

+0

он не должен. 'mail.php' должен выполняться только в том случае, если отправляется' $ _POST', иначе он просто игнорирует оператор if. – Class

+0

мы могли бы поболтать, чтобы я мог понять? im не лучший с php. – Keeano

0

Вы можете посмотреть на событие javascript на кнопку отправки. Затем используйте json и ajax для обработки вашей формы и т. Д., Верните сообщение об успешном завершении/сбое и вставьте туда, где была форма. Это не приведет к перенаправлению пользователя на другую страницу, форма будет заменена сообщением об успешном завершении.

<form method="get" action="" onsubmit="jsquickcomp(this); return false;" > // or something like this for your form heading. 

Тогда вы Js функция ....

function jsquicksub(po_form) { 

    if (gb_ajaxbusy) 
     return false; 

    gb_ajaxbusy = true; 

    var lo_request = {}; 
    lo_request.n = $(po_form).find('#sub-firstname').val(); 
    lo_request.e = $(po_form).find('#sub-email').val(); 
// etc etc 

    $(po_form).fadeTo(200, 0.3); 

    $.getJSON('/mail.php', lo_request, function(po_result) { // this is your mail.php which performs all the php side of the form stuff 

     gb_ajaxbusy = false; 
     $(po_form).fadeTo(0, 1); 

     if (!po_result.success) { 
      alert(po_result.content); // has an alert box for error message. Can change it for anything 
      return false; 
     }else{ 
      setTimeout(function() { 
        $.modal.close(); 
      }, 2500); 
     } 

     $(po_form).replaceWith(po_result.content); // replaces the form with the success message 

    }); 

} 

Затем в mail.php

// function gets passed values after validation and returns a message to the user on screen 
function jsonreturn($pb_success, $ps_content = null) { 

    $lo_result = (object) array('success'=>$pb_success, 'content'=>$ps_content); 

    ob_clean(); 
    echo json_encode($lo_result); 
    exit; 

} // end jsonreturn() 

// use $_GET to get all the values you have send through from your js file 
// validate the data and do whatever you want to do with it 

// these return the message that will replace the form 
jsonreturn(true, 'Success!'); // for success 
jsonreturn(false, 'Fail'); // for fail 

Надежда, что делает какой-то смысл?

Смежные вопросы