将数组传递给var函数

时间:2012-05-21 10:25:37

标签: javascript jquery

var reguser = function(btn,url,form_data,op) {
    $(btn).click(function(){
        postLoad(url,form_data,op);
        return false;
    });
}

var postLoad = function(url,form_data,op,fade) {
    $.post(base_url(url),form_data,function(q){$(op).html(q);});
}

var getVal = function(link) {
    return $(link).val();
};

var base_url = function(link) {
    return 'http://localhost/cw/' + link;
}

我这里有三个var功能。我觉得很奇怪,当我想传递一个数组变量时,它不会在我的AJAX中传递。

以下是我执行代码的方法(这已在$(document).ready();中声明。上面的代码存储在一个单独的文件中。

reguser('#add-acct','ctrl_register/AJAXreguser',{call:1,fname:getVal('#fname')},'#acct-detail');

结果:

  

数组([call] => 1 [fname] =>)

表单代码

    <form action="http://localhost/cw/ctrl_register" class="form-vertical" method="post" accept-charset="utf-8">
<label for="fname">First Name</label>
    <input type="text" name="fname" value="" class="span8 input-small"id="fname" placeholder="First Name" />
    <label for="mname">Middle Name</label>
<input type="text" name="mname" value="" class="span8 input-small"id="mname" placeholder="Middle Name" />
<label for="lname">Last Name</label>
<input type="text" name="lname" value="" class="span8 input-small"id="lname" placeholder="Last Name" />
<label for="user">Username</label>
<input type="text" name="user" value="" class="span8 input-small"id="user" placeholder="Username" />
<label for="pass">Password</label>
<input type="password" name="pass" value="" class="span8 input-small"id="pass" placeholder="Password" />
<label for="pass2">Confirm Password</label>
<input type="password" name="pass2" value="" class="span8 input-small"id="pass" placeholder="Confirm Password" />
</br><input type="submit" name="Add-acct" value="Add Account" class="btn btn-primary" id="add-acct" />
</form>

enter image description here

1 个答案:

答案 0 :(得分:2)

此代码适用于我: http://jsfiddle.net/flocsy/WC336/1/

问题在于,在reguser中你想为你传递的按钮注册onclick,但是在同一个调用中你传递的fname.val()是空的,因为你还没有填充它在。

解决方案是从寄存器中删除onclick并将其放在document.ready中:

var reguser = function(btn,url,form_data,op) {
    console.log(form_data);
//    $(btn).click(function(){
        postLoad(url,form_data,op);
        return false;
//    });
};


$(document).ready(function(){
    $("#add-acct").on("click",function(){
        var fn=getVal('#fname');
        var dat = {'call':1,'fname':fn};
        reguser('#add-acct','ctrl_register/AJAXreguser',dat,'#acct-detail');
        return false;
    });
});
​