我正在学习jquery并且正在编写一些非常简单的jquery代码,它将一些变量发布到我的控制器中的方法中。使用下面发布的代码时,我在firebug中得到“myform is not defined”错误。
这是我的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未定义”错误。
我知道我的jQuery get()函数有问题,有人可以帮帮我,非常感谢你!
答案 0 :(得分:3)
“myform未定义”错误发生,因为您尚未在javascript中设置myform。
尝试Jquery serializeArray()
var myform= $('form').serializeArray();
function get(){
$.post('jqtest/test',{name: myform.myname.value},
function (output){
$('#username').html(output).show();
} );
}
答案 1 :(得分:1)
function get(){
$.post('jqtest/test',{name: $('form[name="myform"] input[name="myname"]').val()},
function (output){
$('#username').html(output).show();
}
);
}
答案 2 :(得分:1)
替换
myform.myname.value
与
$('input[name="myname"]').val()
答案 3 :(得分:1)
你可以这样做:
document.myform.myname.value
答案 4 :(得分:1)
表单的ID应为<form name="myform" id="myformid">
$.post('jqtest/test',{name: myform.myname.value},
将替换为以下代码:)
$.post('jqtest/test',{name: $( 'input[name="myname"]' ).val()},
如果您需要发送所有表单值,那么您应该使用序列化。它更快。
如果您对不同的表单使用相同的输入名称。那么你应该写如下:
var $form = $( "#myformid" );
name = $form.find( 'input[name="myname"]' ).val();
和帖子将是:
$.post('jqtest/test',{name: name},