"形式未定义"错误使用jQuery


"Form is not defined" error using jQuery

我正在学习jquery,我正在编写一些非常简单的jquery代码,将一些变量发布到我的控制器中的方法。当使用下面发布的代码时,我在firebug中得到"myform未定义"错误。

这是我的html:

<head>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <script type="text/javascript" src="assets/js/jquery-1.7.1.js"></script>
    <script type="text/javascript">
        function get(){
            $.post('jqtest/test',{name: myform.myname.value},
            function (output){
                $('#username').html(output).show();          
            }    
        );
        }
    </script>
</head>
<body>
    <div>TODO write content</div>
    <form name="myform">
        <input type="text" name="myname">
        <input type="button" value="Get" onclick="get();">
    </form>
    <div id="username"></div>
</body>

这是我的codeigniter控制器代码:

class Jqtest extends CI_Controller {
function _Jqtest() {
    parent::controller();
}
function index() {
    $this->load->view("jqtest/jqtest.html");
}
function test() {
    print_r($_POST);
    $this->load->view("jqtest/jqtest.html");
}
}

当点击Get按钮时,测试方法应该打印POST值。当我在FireFox中运行代码时,它不起作用(没有打印出任何内容)。当我检查firebug控制台时,我发现了一个"myform is not defined"错误。

我知道我的jQuery get()函数有问题,有人可以帮助我,非常感谢!

"myform is not defined"错误发生,因为你没有在javascript中设置myform。

试试Jquery的serializeArray()

var myform= $('form').serializeArray();
function get(){
            $.post('jqtest/test',{name: myform.myname.value},
            function (output){
                $('#username').html(output).show();          
                }   );
}
    function get(){
        $.post('jqtest/test',{name: $('form[name="myform"] input[name="myname"]').val()},
        function (output){
            $('#username').html(output).show();          
        }    
    );
    }

Replace

myform.myname.value

$('input[name="myname"]').val()

您可以简单地这样做:

document.myform.myname.value

表单应该有一个id <form name="myform" id="myformid">

$.post('jqtest/test',{name: myform.myname.value},

将被替换为以下代码:)

$.post('jqtest/test',{name: $( 'input[name="myname"]' ).val()},

如果你需要发送所有形式的值,那么你应该使用serialize。快。

API DOC: serialize

如果你在不同的表单中使用相同的输入名称。那么你应该这样写:

var $form = $( "#myformid" );
name = $form.find( 'input[name="myname"]' ).val();

和post将是:

$.post('jqtest/test',{name: name},