2013-03-08 84 views
1

我有以下的HTML代碼的形式:PHP提交與使用jQuery。員額()多個提交按鈕

<form method="post" action="the_file.php" id="the-form"> 
    <input type="text" name="the_input" value="<?php if (isset($_POST['the_input']) echo $_POST['the_input]; ?>"> 
    <button type="submit" name="eat_something" value="TRUE">Eating</button> 
    <button type="submit" name="eat_something" value="FALSE">Don't Eat</button> 
</form> 
<textarea id="result"></textarea> 

跟此JS:

$('#the-form').bind('submit', submitForm); 
function submitForm(evt) { 
    jQuery.post(
     $(this).attr('action'), 
     $(this).serialize(), 
     function(data) { 
      $('#result').empty().append(data).slideDown(); 
     }); 
    evt.preventDefault(); 
} 

我也有一個PHP腳本在提交時從輸入中接收$ _POST值並運行條件來測試哪個提交按鈕被點擊。

像這樣:

$input = $_POST['the_input']; 
$eating = $_POST['eat_something']; 
if ($eating == 'TRUE') { 
    // Do some eating... 
} else { 
    // Don't you dare... 
} 

如果我不使用jQuery.post()函數從按鈕提交值被公佈。但是,出於某種原因,我無法通過jQuery.post()函數將按鈕值傳遞給PHP $ _POST。如果我不使用jQuery.post(),則輸出不會附加到textarea,而是以單獨頁面上的文本格式(如文檔)附加。我也試着在按鈕$('button[type=submit]').bind('submit', submitForm);上調用提交功能,但是這也不能解決我的問題。

在此先感謝您的幫助。

+0

'。員額()'是一個Ajax調用。您可以定義提交的值。如果您想提交按鈕值,請將它們一起發送。 – 2013-03-08 03:52:20

+0

不知道如何完成,建議? – thinkus 2013-03-08 03:54:34

+0

我給了一個答案...沒有測試,但它應該是接近。 – 2013-03-08 04:15:01

回答

2

您在the_name輸入忘記勁兒報價和)

<input type="text" name="the_input" value="<?php if (isset($_POST['the_input'])) { echo $_POST['the_input'] ; } ?>"> 

並且爲了獲取表單按鈕的值,您需要手動將該值附加到序列化值。

$form.serialize() + "&submit="+ $('button').attr("value") 

<script type="text/javascript"> 
    $(function() 
    { 
     $('button[type="submit"]').on('click',function(e) 
     { 
      e.preventDefault(); 
      var submit_value = $(this).val(); 
      jQuery.post 
      (
       $(this).attr('action'), 
       $(this).serialize()+ "&submit="+ submit_value, 
       function(data) 
       { 
        $('#result').empty().append(data).slideDown(); 
       } 
      ); 
     }); 
    }); 
</script> 

完成測試的代碼

<?php 
    if(isset($_POST['the_input'])) 
    { 
     $input = $_POST['the_input']; 
     $eating = $_POST['eat_something']; 
     exit; 
    } 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" /> 
    <title>StackOverFlow</title> 
    <script type="text/javascript" src="js/jquery.js"></script> 
    <script type="text/javascript"> 
     $(function() 
     { 
      $('button[type="submit"]').on('click',function(e) 
      { 
       e.preventDefault(); 
       var submit_value = $(this).val(); 
       jQuery.post 
       (
        $('#the-form').attr('action'), 
        $('#the-form').serialize()+ "&eat_something="+ submit_value, 
        function(data) 
        { 
         $('#result').empty().append(data).slideDown(); 
        } 
       ); 
      }); 
     }); 
    </script> 
</head> 
<body> 
    <form method="post" action="random.php" id="the-form"> 
     <input type="text" name="the_input" value="<?php if (isset($_POST['the_input'])) { echo $_POST['the_input'] ; } ?>"> 
     <button type="submit" name="eat_something" value="TRUE">Eating</button> 
     <button type="submit" name="eat_something" value="FALSE">Don't Eat</button> 
    </form> 
    <textarea id="result"></textarea> 
</body> 
</html> 
+0

對不起,這只是在論壇上的輸入錯誤,而不是在代碼中。 – thinkus 2013-03-08 04:04:54

+0

好吧,我已將此附加到序列化調用如何提取PHP中的所述按鈕的值? – thinkus 2013-03-08 04:14:55

+0

@thinkus ohhh ..現在看到更新的答案我已經添加了如何發送該按鈕的值... – 2013-03-08 04:16:52

-1

更改按鈕,這(改變瓦特/你的表單名稱)..

<input type="hidden" name="eat_something" value="" /> 
<input type="button" onclick="$('input[name=eat_something]').val('TRUE')" /> 
<input type="button" onclick="$('input[name=eat_something]').val('FALSE')" /> 

JavaScript函數和PHP的罰款。

謝謝!

@leo

+0

沒有理由爲此使用'.post()'。 – 2013-03-08 04:02:16

+0

@Jeremy,它是可選的,也可以工作。檢查答案請。謝謝!。 – lemil77 2013-03-08 14:00:38

0

最簡單的答案是:

<form method="post" action="the_file.php" id="the-form"> 
    <input type="text" name="the_input" value="<?php if (isset($_POST['the_input']) echo $_POST['the_input']; ?>"> 
    <input type="submit" name="eat_something" value="Eating" /> 
    <input type="submit" name="eat_something" value="Don't Eat" /> 
</form> 

當然,這不會給出你正在尋找什麼。

你也可以做這樣的事情:

<form method="post" action="the_file.php" id="the-form"> 
    <input id="theInput" type="text" name="the_input" value="<?php if (isset($_POST['the_input']) echo $_POST['the_input']; ?>"> 
    <button type="button" name="eat_something" data-value="TRUE">Eating</button> 
    <button type="button" name="eat_something" data-value="FALSE">Don't Eat</button> 
</form> 

$('#the-form button').bind('click', function(){ 
    jQuery.post($('#the-form').attr('action'), 
    { 
     the_input: $('#theInput').val(), 
     eat_something: $(this).attr('data-value') 
    }, 
    function(data) { $('#result').empty().append(data).slideDown() }, 
    'json' 
});