2013-09-23 2 views
0

Привет всем Я новый ученик для веб-разработки.Как сделать кнопку выполнить на той же странице, но не на следующей странице

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

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

Например: index.php и exec.php

index.php:

<form name="g-form" action="gbtn-exec.php" method="post" class="goat-vote" onsubmit="return validategForm()"> 
<input type="text" name="g-product" placeholder="Brand/Product Name" style="-moz-border-radius: 5px; border-radius: 5px; padding-left:20px; opacity:.5; border:none; margin-left:110px; width:440px; height:38px; font-family:'Proxima Nova Rg';color:#000; font:1.6em;" /> 


<p class="g-question">Why you love it?</p> 

<textarea name="g-reason" style="-moz-border-radius: 5px; border-radius: 5px; padding:5px; opacity:.5; border:none; margin-left:110px; width:450px; height:150px; font-family:'Proxima Nova Rg';color:#333; font-size:1em;"></textarea> 

<input name="g-btn" class="vote-btn" type="submit" value="vote" style="margin-left:470px; cursor:pointer;"></form> 

exec.php

if ($_POST["g-product"] && $_POST["g-reason"] != "") 
{ 
$gproduct = $_POST["g-product"]; 
$greason = $_POST["g-reason"]; 

$insert ="INSERT INTO jovine.vote (vote_id ,product_name ,reason ,type) VALUES (NULL, '$gproduct', '$greason', 'goat')"; 
$result = mysql_query($insert,$con); 
echo "<script>"; 
echo "alert('Thank you. Your vote has been recorded.');"; 
echo "window.location.href='index.php';"; 
echo "</script>"; 
} 

Мой вопрос, как я могу выполнить кнопку отправки в index.php без перехода к exec.php? (означает объединение обоих в .php) Это потому, что когда пользователь нажимает кнопку «Отправить», он переходит на пустую страницу, которая не выглядит красивой.

Любой может помочь? Благодаря! =)

+2

Используйте метод ajax для выполнения exec.php в фоновом режиме и получите результат в index.php –

+0

попробуйте использовать jquery ajax – iJade

+0

@DonovanCharpin могу ли я знать, как написать сценарий? Im kinda не понимаю maunal ... = ( – youaremysunshine

ответ

0
if (isset($_POST["g-btn"])) 
{ 
$gproduct = $_POST["g-product"]; 
$greason = $_POST["g-reason"]; 

$insert ="INSERT INTO jovine.vote (vote_id ,product_name ,reason ,type) VALUES (NULL, '$gproduct', '$greason', 'goat')"; 
$result = mysql_query($insert,$con); 
echo "<script>"; 
echo "alert('Thank you. Your vote has been recorded.');"; 
echo "window.location.href='index.php';"; 
echo "</script>"; 
} 

<html> 
<form name="g-form" action="a.php" method="post" class="goat-vote" onsubmit="return validategForm()"> 
<input type="text" name="g-product" placeholder="Brand/Product Name" style="-moz-border-radius: 5px; border-radius: 5px; padding-left:20px; opacity:.5; border:none; margin-left:110px; width:440px; height:38px; font-family:'Proxima Nova Rg';color:#000; font:1.6em;" /> 


<p class="g-question">Why you love it?</p> 

<textarea name="g-reason" style="-moz-border-radius: 5px; border-radius: 5px; padding:5px; opacity:.5; border:none; margin-left:110px; width:450px; height:150px; font-family:'Proxima Nova Rg';color:#333; font-size:1em;"></textarea> 

<input name="g-btn" class="vote-btn" type="submit" value="vote" style="margin-left:470px; cursor:pointer;"></form> 
</html> 

вы можете сделать вот так ... isset ($ _ POST ["g-btn"]) проверит, будет ли он нажат или нет?

0

Edit: Игнорировать это, пожалуйста, не прочитал ваш вопрос полностью, как это кажется

Попробуйте что-то вроде этого:

index.php

<form name="g-form" action="gbtn-exec.php" method="post" class="goat-vote" onsubmit="return validategForm()"> 
    <input type="text" name="g-product" placeholder="Brand/Product Name" style="-moz-border-radius: 5px; border-radius: 5px; padding-left:20px; opacity:.5; border:none; margin-left:110px; width:440px; height:38px; font-family:'Proxima Nova Rg';color:#000; font:1.6em;" /> 

    <p class="g-question">Why you love it?</p> 

    <textarea name="g-reason" style="-moz-border-radius: 5px; border-radius: 5px; padding:5px; opacity:.5; border:none; margin-left:110px; width:450px; height:150px; font-family:'Proxima Nova Rg';color:#333; font-size:1em;"></textarea> 

    <?php if(!isset($_GET['hidesubmit'])): ?> 
    <input name="g-btn" class="vote-btn" type="submit" value="vote" style="margin-left:470px; cursor:pointer;"> 
    <?php endif; ?> 
</form> 

EXEC. php

if ($_POST["g-product"] && $_POST["g-reason"] != "") 
{ 
    $gproduct = $_POST["g-product"]; 
    $greason = $_POST["g-reason"]; 

    $insert ="INSERT INTO jovine.vote (vote_id ,product_name ,reason ,type) VALUES (NULL, '$gproduct', '$greason', 'goat')"; 
    $result = mysql_query($insert,$con); 
    echo "<script>"; 
    echo "alert('Thank you. Your vote has been recorded.');"; 
    echo "window.location.href='index.php?hidesubmit=1';"; 
    echo "</script>"; 
} 
+0

извините, но почему он не работает? – youaremysunshine

+0

Он должен работать, но вам нужно решение, которое работает без отправки формы - мое решение отправляет форму и перенаправляет на исходную страницу с помощью специальный параметр. На основе этого параметра отображается кнопка отправки или нет. – Joshua

0

Добавить JQuery LIB в вашей голове и ваши JQuery персидско (myjQuery.js), который вы будете использовать после того, как для AJAX

index.php

<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script> 
<script src="/js/myjQuery.js"></script> 

Создайте свою форму без действия на вашей форме ,

<html> 
    <form name="g-form" class="goat-vote"> 
     <input type="text" name="g-product" placeholder="Brand/Product Name" style="-moz-border-radius: 5px; border-radius: 5px; padding-left:20px; opacity:.5; border:none; margin-left:110px; width:440px; height:38px; font-family:'Proxima Nova Rg';color:#000; font:1.6em;" /> 
     <p class="g-question">Why you love it?</p> 
     <textarea name="g-reason" style="-moz-border-radius: 5px; border-radius: 5px; padding:5px; opacity:.5; border:none; margin-left:110px; width:450px; height:150px; font-family:'Proxima Nova Rg';color:#333; font-size:1em;"></textarea> 
     <input name="g-btn" class="vote-btn" value="vote" style="margin-left:470px; cursor:pointer;"> 
    </form> 
</html> 

Держите exec.php как этот

exec.php

if ($_POST["g-product"] && $_POST["g-reason"] != "") 
{ 
    $gproduct = $_POST["g-product"]; 
    $greason = $_POST["g-reason"]; 
    $insert ="INSERT INTO jovine.vote (vote_id ,product_name ,reason ,type) VALUES (NULL, '$gproduct', '$greason', 'goat')"; 
    $result = mysql_query($insert,$con); 
    echo "<script>"; 
    echo "alert('Thank you. Your vote has been recorded.');"; 
    echo "window.location.href='index.php?hidesubmit=1';"; 
    echo "</script>"; 
} 

и создать myjQuery.js

myjQuery.js

$(document).ready(function(){ 
    $(".vote-btn").on("click", function(){ 
     g-product = $("input[name='g-product']").val(); 
     g-reason = $("input[name='g-reason']").val(); 
     $.ajax({cache:false,dataType:'html',crossDomain:true,type:'POST', 
      url:'/php/exec.php',data : {g-product:g-product, g-reason:g-reason}, 
      success:function(html){ 
       console.log(html); 
      }, 
      error:function(j,t,e){ 
       console.log('problem'); 
      } 
     }); 
    }); 
}); 

Вы можете попробовать этот код, возможно возникнут проблемы с js path или php-файлом ваших файлов. И, возможно, некоторые ошибки, которые вы можете исправить.

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