var newusername = $(this).val();只发出按钮的值

时间:2016-03-01 16:51:17

标签: javascript php jquery

继承我的问题,当我试图将我的数据发送到PHP时,它只发送<button><input type="button">的值。

如果我删除变量的定义,它只会将数据作为字符串发送,如果我有这样的话

newusername: "newusername",
newpassword: "newpassword",
newclub: "newclub"

如果我删除""我将在jquery.mini.js中收到错误

HTML:

<form method="post">
    <div class="form-group">
        <label> Username </label>
        <input type="text" class="form-control" id="newusername">
    </div>
    <div class="form-group">
        <label> Password </label>
        <input type="password" class="form-control" id="newpassword">
    </div>
    <div class="form-group">
        <label> Your club </label>
        <input type="text" class="form-control" id="newclub">
    </div>
    <input type="button" id="btn-reg">
</form>

使用Javascript:

console.log('Script loaded...');

$("#btn-reg").on("click", reg);      

function reg(newusername, newpassword, newclub) {
    console.log('Klick, klick...');
    var newusername = $(this).val();
    var newpassword = $(this).val();
    var newclub = $(this).val();

    $.post('classCalling.php', {
        newusername: "newusername",
        newpassword: "newpassword",
        newclub: "newclub"
    },
    function(data){
        console.log(data);
    });
}

5 个答案:

答案 0 :(得分:5)

我看到两件事:

  • 发送对象的定义很糟糕。该对象由键值对组成,您将其设置为硬编码的字符串值。

  • 开头$(this).val()的变量捕获都是一样的。您没有将其作为DOM对象获取。您应该在括号中进行CSS查询(即$("---this--"))。

function reg(newusername, newpassword, newclub) {

    console.log('Klick, klick...');

    // if there is a input with class newusernameand only one
    var newusername = $('input.newusername').val();

    //if there is a input with class newpassword and only one
    var newpassword = $('input.newpassword').val();

    //if there is a input with class newclub and only one
    var newclub = $('input.newclub').val();

    $.post('classCalling.php',
        {
            newusername: newusername,
            newpassword: newpassword,
            newclub: newclub
        },
        function(data) {
            console.log(data);
        });
}

答案 1 :(得分:2)

假设这是一个表单,您可以使用serialize()来简化数据,list-style-type将发送与输入控件名称相同的键

regex

JS

<form id="password-form">
   <input name="newusername">
   <input name="newpassword">
   <select name="newclub"></select>
   <input type="submit" value="Submit">
</form>

或使用$('#password-form').submit(function(event){ event.preventDefault(); // stop default from reloading page var postData = $(this).serialize(); $.post('classCalling.php', postData , function(response){ console.log(response); }); }); 作为事件处理函数编写:

reg()

最好绑定提交事件,以便用户不会使用键盘绕过点击

答案 2 :(得分:0)

您不能将这些变量作为参数传递。此外,您将字符串传递给后端,什么不能工作。此外,您不是选择输入字段的值而是选择按钮本身的值。

HTML:

        NSMutableArray *arr = [[NSMutableArray alloc]init];

        int sizeArr;

        scanf("%d", &sizeArr);

        int arrayValues;

        for(int i=0; i<sizeArr; i++)
        {

            scanf("%d",&arrayValues);
            [arr addObject:arrayValues]; //error on this line
        }

JavaScript的:

<form>
    <input type="text" class="newusername" />
    <input type="password" class="newpassword" />
    <input type="text" class="newclub" />
    <button class="btn-reg">Submit</button>
</form>

答案 3 :(得分:0)

看起来你可能在事件处理程序如何在jQuery中工作时出现概念错误。

致电$("#btn-reg").on("click", reg);

每当按下reg按钮时,您告诉jQuery调用方法#btn-reg。发生这种情况时,jQuery将在传递被按下的元素时调用reg。 (这是为了支持多个事件处理程序调用一个方法,例如,如果你有2个按钮)。

因此,使用$(this),您实际上是在调用$("#btn-reg")

因此,

$(this).val();会为您提供<button>的值,您将其分配给三个变量newusernamenewpasswordnewclub。 - 这解释了为什么您在PHP脚本上看到<button>的价值。

虽然您尚未提供表单的HTML内容,但以下是我如何使用javascript提交的简单3字段表单的示例:

HTML:

<input type="text" id="newusername" />
<input type="text" id="newpassword" />
<input type="text" id="newclub" />
<button id="btn-reg">Submit</button>

JavaScript的:

console.log('Script loaded...');

$("#btn-reg").on("click", reg);      

function reg(e) {
    e.preventDefault();
    console.log('Klick, klick...');

    // You are declaring new variables here
    var newusername = $("#newusername").val();
    var newpassword = $("#newpassword").val();
    var newclub = $("#newclub").val();

    // And using them here. The format used here is
    // <name to submit>: <value to submit>
    // That is why the variable names should not be quoted on the right
    $.post('classCalling.php', {
        newusername: newusername,
        newpassword: newpassword,
        newclub: newclub
    },
    function(data){
        console.log(data);
    });
}

答案 4 :(得分:-5)

var newusername="newusername"; // or get your needed value anywhere else
var newpassword="newpassword"; // or get your needed value anywhere else
var newclub="newclub"; // or get your needed value anywhere else

$("#btn-reg").on("click", function () {

$.post('classCalling.php', {

    newusername: newusername,
    newpassword: newpassword,
    newclub: newclub
},
function(data){
    console.log(data);
});
});

它会帮助你。