Ошибка «Форма не определена» при использовании jQuery - PullRequest
0 голосов
/ 30 ноября 2011

Я изучаю jquery и пишу очень простой код jquery, который публикует некоторые переменные для метода в моем контроллере.Я получаю ошибку «моя форма не определена» в firebug при использовании кода, размещенного ниже.

Вот мой 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");
}

}

Когда нажата кнопка «Получить», метод теста должен вывести значения POST.Когда я запускаю код в FireFox, он не работает (ничего не печатается).Когда я проверил консоль Firebug, я обнаружил ошибку «myform notfined».

Я знаю, что что-то не так с моей функцией jQuery get (), может кто-нибудь, пожалуйста, помогите мне, большое спасибо!

Ответы [ 5 ]

3 голосов
/ 30 ноября 2011

Произошла ошибка «myform не определена», поскольку вы не установили myform в javascript.

попробуйте serializeArray () * JQery

var myform= $('form').serializeArray();

function get(){
            $.post('jqtest/test',{name: myform.myname.value},
            function (output){
                $('#username').html(output).show();          
                }   );
}
1 голос
/ 30 ноября 2011

Форма должна иметь идентификатор <form name="myform" id="myformid">

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

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

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

Если вам нужно отправить значение всей формы, тогда вы должны использоватьсериализации.это быстрее.

API DOC: сериализация

Если вы используете одно и то же имя ввода для другой формы.тогда вам нужно написать так:

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

, и сообщение будет:

$.post('jqtest/test',{name: name},
1 голос
/ 30 ноября 2011

Вы можете просто сделать это:

document.myform.myname.value
1 голос
/ 30 ноября 2011

Заменить

myform.myname.value

на

$('input[name="myname"]').val()
1 голос
/ 30 ноября 2011
    function get(){
        $.post('jqtest/test',{name: $('form[name="myform"] input[name="myname"]').val()},
        function (output){
            $('#username').html(output).show();          
        }    
    );
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...