使用Jquery Ajax Form Plugin和php提交表单?

时间:2012-03-20 03:12:04

标签: php ajax jquery

这是一个简单的例子,说明如何使用Jquery表单插件提交表单并使用html格式检索数据 HTML代码

<html> 
<head> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.js"></script> 
    <script src="http://malsup.github.com/jquery.form.js"></script> 

    <script> 
 // prepare the form when the DOM is ready 
    $(document).ready(function() { 
        // bind form using ajaxForm 
        $('#htmlForm').ajaxForm({ 
            // target identifies the element(s) to update with the server response 
            target: '#htmlExampleTarget', 

            // success identifies the function to invoke when the server response 
            // has been received; here we apply a fade-in effect to the new content 
            success: function() { 
                $('#htmlExampleTarget').fadeIn('slow'); 
            } 
        }); 
    });
    </script> 
</head> 
<body>
<form id="htmlForm" action="post.php" method="post"> 
    Message: <input type="text" name="message" value="Hello HTML" /> 
    <input type="submit" value="Echo as HTML" /> 
</form>
<div id="htmlExampleTarget"></div>
</body>
</html>

PHP代码

<?php 
echo '<div style="background-color:#ffa; padding:20px">' . $_POST['message'] . '</div>'; 
?>

这只是工作正常 我需要知道如果我需要序列化表单字段,以便如何通过JS函数传递此选项 我还想在表单处理时显示加载消息 我该怎么做呢 谢谢

3 个答案:

答案 0 :(得分:2)

要将其分类并发布到php页面,您只需要在页面中使用jQuery。没有其他插件需要

  $("#htmlForm").submit(function(){

     var serializedData= $("#htmlForm").serialize();
     $.post("post.php", { dat: serializedData},      function(data) {
        //do whatever with the response here
     });

  });

如果要显示加载消息,可以在开始发布呼叫之前执行此操作。 假设你有div的id&#34; divProgress&#34;出现在您的页面

<强> HTML

<div id="divProgress" style="display:none;"></div>

<强>脚本

$(function(){
  $("#htmlForm").submit(function(){

     $("#divProgress").html("Please wait...").fadeIn(400,function(){  

        var serializedData= $("#htmlForm").serialize();
         $.post("post.php", { dat: serializedData},function(data) {
           //do whatever with the response here
          });

        });    
  });
});

答案 1 :(得分:0)

Shyju发布的答案应该可以正常工作。我认为&#39; dat&#39;应该用引号给出。

$.post("post.php", { 'dat': serializedData},function(data) {

...

}

或者简单地说,

$.post("post.php", serializedData, function(data) {

 ...

}

并使用PHP中的$ _POST访问数据。

注意:抱歉,我没有测试过代码,但它应该可以运行。

答案 2 :(得分:0)

Phery库为您做幕后工作,只需创建表单,它将自动以表格形式提交您的输入。 http://phery-php-ajax.net/

<?php 
  Phery::instance()->set(array(
    'remote-function' => function($data){
       return PheryResponse::factory('#htmlExampleTarget')->fadeIn('slow');
    }
  ))->process();
?>
<?php echo Phery::form_for('remote-function', 'post.php', array('id' => ''); ?> //outputs <form data-remote="remote-function">
  Message: <input type="text" name="message" value="Hello HTML" /> 
  <input type="submit" value="Echo as HTML" /> 
</form>
<div id="htmlExampleTarget"></div>
</body>
</html>