如何使用AJAX/JSON提交表单?

Nav*_*eed 5 php forms jquery json submit

目前我的AJAX工作方式如下:

的index.php

<a href='one.php' class='ajax'>One</a>    
<div id="workspace">workspace</div>
Run Code Online (Sandbox Code Playgroud)

one.php

$arr = array ( "workspace" => "One" );
echo json_encode( $arr );
Run Code Online (Sandbox Code Playgroud)

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]);
            }
        });
    });
});
Run Code Online (Sandbox Code Playgroud)

上面的代码工作得很好.当我点击链接"一"one.php执行和字符串"一"被加载到工作区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>
Run Code Online (Sandbox Code Playgroud)

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

$arr = array ( "workspace" => $_POST['myText'] );
echo json_encode( $arr );
Run Code Online (Sandbox Code Playgroud)

如何编写js以使用AJAX/JSON提交表单.

谢谢

Kei*_*ith 8

提交表格很简单:

$j('#myForm').submit();
Run Code Online (Sandbox Code Playgroud)

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

通过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);
    }
});
Run Code Online (Sandbox Code Playgroud)

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

$j('div.ajax').load('one.php', data);
Run Code Online (Sandbox Code Playgroud)

不幸的是,你有一个混乱的位置:data用表单变量填充该对象以发布.

但它应该是一个相当简单的循环.


Nav*_*eed 8

这是我的完整解决方案:

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;
});
Run Code Online (Sandbox Code Playgroud)