【问题标题】:How to submit a form with AJAX/JSON?如何使用 AJAX/JSON 提交表单?
【发布时间】:2010-08-09 07:36:12
【问题描述】:

目前我的 AJAX 是这样工作的:

index.php

<a href='one.php' class='ajax'>One</a>    
<div id="workspace">workspace</div>

one.php

$arr = array ( "workspace" => "One" );
echo json_encode( $arr );

ajax.js

jQuery(document).ready(function(){
    jQuery('.ajax').live('click', function(event) {
        event.preventDefault();
        jQuery.getJSON(this.href, function(snippets) {
            for(var id in snippets) {
                jQuery('#' + id).html(snippets[id]);
            }
        });
    });
});

以上代码运行良好。当我单击链接 'One' 时,将执行 one.php 并将字符串 "One" 加载到 workspace DIV >.

问题:

现在我想用 AJAX 提交一个表单。例如,我在 index.php 中有一个这样的表单。

<form id='myForm' action='one.php' method='post'>
 <input type='text' name='myText'>
 <input type='submit' name='myButton' value='Submit'>
</form>

当我提交表单时,one.php 应该打印工作区 DIV 中的文本框值。

$arr = array ( "workspace" => $_POST['myText'] );
echo json_encode( $arr );

如何编写 js 代码以使用 AJAX/JSON 提交表单。

谢谢

【问题讨论】:

    标签: php jquery json forms submit


    【解决方案1】:

    这是我的完整解决方案:

    jQuery('#myForm').live('submit',function(event) {
        $.ajax({
            url: 'one.php',
            type: 'POST',
            dataType: 'json',
            data: $('#myForm').serialize(),
            success: function( data ) {
                for(var id in data) {
                    jQuery('#' + id).html(data[id]);
                }
            }
        });
        return false;
    });
    

    【讨论】:

      【解决方案2】:

      提交表单很简单:

      $j('#myForm').submit();
      

      但是,这将回发整个页面。

      通过 Ajax 调用发帖也很简单:

      $j.ajax({
          type: 'POST',
          url: 'one.php',
          data: { 
              myText: $j('#myText').val(), 
              myButton: $j('#myButton').val()
          },
          success: function(response, textStatus, XMLHttpRequest) {  
              $j('div.ajax').html(response);
          }
      });
      

      如果你想对结果做一些事情,你有两个选择 - 你可以显式设置 success 函数(我在上面已经做过),或者你可以使用 load 辅助方法:

      $j('div.ajax').load('one.php', data);
      

      不幸的是,您遇到了一件麻烦事:使用要发布的表单变量填充 data 对象。

      不过它应该是一个相当简单的循环。

      【讨论】:

      • 我也在这里回答了完整的解决方案。如果您将编辑您的答案,那么我将允许我投票给您。
      【解决方案3】:

      查看jQuery Form Plugin 中的$.ajaxSubmit 函数。应该很简单

       $('#myForm').ajaxSubmit();
      

      您可能还希望绑定到表单提交事件,以便所有提交都通过 AJAX 进行,如链接页面上的示例所示。

      【讨论】:

        【解决方案4】:

        您可以使用 jQuery 的 $.ajax 方法提交表单,如下所示:

        $.ajax({
         url: 'one.php',
         type: 'POST',
         data: $('#myForm').serialize(),
         success:function(data){
           alert(data);
         }
        });
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-05-19
          • 2021-04-14
          • 2013-05-19
          • 2012-11-16
          • 2017-02-04
          相关资源
          最近更新 更多