2010-07-18 2 views
2

им пытаются достичь следующее, в PHP У меня есть форма, как это:JQuery представить Ajax форму с 2 кнопки отправки

<form method="post" id="form_1" action="php.php"> 
<input type="submit" value="add" name="sub"/> 
<input type="submit" value="envoi" name="sub"/> 
</form> 

файл форма действия является:

<?php 

if($_POST["sub"]=="add"){ ?> 

<script> 
alert("") 
</script> 
<?php echo "ZZZZZZ"; ?> 

<?php } ?> 

так это означает если я нажимаю sub со значением, добавьте подсказку с предупреждением, как я могу сделать то же самое (различать как отправить), но используя запрос Ajax:

следующий код не работает:

$(function(){ 
     $('form#form_1').submit(function(){ 
var _data= $(this).serialize() 
$.ajax({ 
     type: 'POST', 
     url: "php.php?", 
     data:_data, 
     success: function(html){ 
     $('div#1').html(html) 

      } 
    }) 
}) 
    }) 
    </script> 
</head> 

<body> 
<div id="1" style="width: 100px;height: 100px;border: 1px solid red"></div> 

<form method="post" id="form_1" action="javascript:;"> 
<input type="submit" value="add" name="sub"/> 
<input type="submit" value="envoi" name="sub"/> 
</form> 
</body> 
+0

Вам не хватает полуколоней (';') в вашем javascript. – tcooc

+0

полуколоны не являются обязательными в Js, это не проблема. – tetris

+0

Что это * * это делает, это ваша единственная проблема, что она все еще делает полную обратную передачу? –

ответ

2

Вы можете поместить обработчик событий на кнопки, а не на форму. Получите параметры из формы, а затем добавьте параметр для кнопки и отправьте форму. Убедитесь, что обработчик возвращает «false».

$(function() { 
    $('input[name=sub]').click(function(){ 
    var _data= $('#form_1').serialize() + '&sub=' + $(this).val(); 
    $.ajax({ 
     type: 'POST', 
     url: "php.php?", 
     data:_data, 
     success: function(html){ 
     $('div#1').html(html); 
     } 
    }); 
    return false; 
    }); 
}); 

Вы должны явно добавить параметр «суб», потому что Jquery не включает в себя те, когда вы звоните «Serialize()».

0

Много точка с запятой отсутствует, смотрите ниже

$(function(){ 
     $('form#form_1').submit(function(){ 
     var _data= $(this).serialize(); 
     $.ajax({ 
      type: 'POST', 
      url: "php.php?", 
      data:_data, 
      success: function(html){ 
       $('div#1').html(html);  
      } 
     }); 
     }); 
    }); 
+0

бог, я хотел поставить -1 для вашего ответа. Теперь все в порядке до 0. – tetris

+2

Это может быть не ур ответ, но его хороший стандарт, чтобы следовать, почему бы не положить -1 на этот – Starx

2

В этом случае необходимо вручную добавить кнопку отправки в посланных данных, как это:

$(function(){ 
    $('form#form_1 :submit').submit(function(){ 
    var _data = $(this).closest('form').serializeArray(); //serialize form 
    _data.push({ name : this.name, value: this.value }); //add this name/value 
    _data = $.param(_data);        //convert to string 
    $.ajax({ 
     type: 'POST', 
     url: "php.php?", 
     data: _data, 
     success: function(html){ 
     $('div#1').html(html); 
     } 
    }); 
    return false; //prevent default submit 
    }); 
}); 

Мы используем .serializeArray() для получите сериализованную версию формы (which is what .serialize() uses internally), добавив нашу пару имя/значение к этому массиву до, и сериализуется в строку через $.param().

Последнее добавление - return false, чтобы предотвратить по умолчанию отправить поведение, которое покинет страницу.

0

jQuery Form plugin предлагает некоторые дополнительные функции, и он автоматизировал некоторые задачи, которые мы должны выполнить вручную, пожалуйста, взгляните на него. Также он обеспечивает лучший способ обработки элементов формы, сериализации, и вы можете подключить функции предварительной обработки перед отправкой формы.

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