1

基本上我正在尝试在 Jquery 中创建一个 AJAX 脚本。但主要问题是我想像这样定义变量

$(document).ready(function () {
    var u = $('#username');
    var s = $('#server');
    var p = $('#password');

    $('#server').keyup(function () {
         $.post("connect.php", { s: s.value, u: u.value , p: p.value },
             function(data) {
             $('#hol').html('checking connection...' + u.value + " " + p.value + " " + s.value + " " + data);
                             }
                 ); 
   });

});

但这不知何故不起作用....我必须用“this”定义变量而不是能够事先分配它们,这似乎很奇怪。

有效的代码是

$(document).ready(function () {

    $('#username').keyup(function () {
        var u = this;
            $('#password').keyup(function () {
            var p = this;
                   $('#server').keyup(function () {
                    var s = this;

                     $.post("connect.php", { s: s.value, u: u.value , p: p.value },
                     function(data) {
                        $('#hol').html('checking connection...' + u.value + " " + p.value + " " + s.value + " " + data);
                                         }); });
                 }); 
                  }); 
   });

所以我的问题基本上是“如何让 jquery 捕获文本字段中的输入并将其分配给变量?就像在第一个示例中一样??” 或者它不必做很长的路要走?

4

6 回答 6

5

您需要使用.val()而不是.value

{ s: s.val(), u: u.val() , p: p.val() }

as s, u, andp是 jQuery 对象,而不是 DOM 元素。

于 2012-07-26T11:02:41.687 回答
1

采用.val();

var u = $('#username').val();
var s = $('#server').val();
var p = $('#password').val();
于 2012-07-26T11:03:04.203 回答
0

作为替代方案,您可以使用serialize()以下方法:

将一组表单元素编码为字符串以进行提交

$('#server').keyup(function () {
         $.post("connect.php", $('input[type=text]').serialize(),
             function(data) {
             $('#hol').html('checking connection ' + data);
         }); 
   });
于 2012-07-26T11:03:04.533 回答
0

你可以用这种方式

$(document).ready(function () {
    var u = $('#username');
    var s = $('#server');
    var p = $('#password');

    s.keyup(function () {
         $.post("connect.php", { s: s.val(), u: u.val() , p: p.val() },
             function(data) {
             $('#hol').html('checking connection...' + u.val() + " " + p.val() + " " + s.val() + " " + data);
                             }
                 ); 
   });

});
于 2012-07-26T11:04:01.723 回答
0

您正在使用 jQuery 选择器..

var u = $('#username');
var s = $('#server');
var p = $('#password');

并以时尚的方式获取价值javascript......

u.value; //WRONG

如果您正在使用,jQuery那么正确的方法是

u.val();

或者

u.attr('value');

v 和 w 也是如此 :)

于 2012-07-26T11:05:07.467 回答
0

这应该涵盖所有内容:

$(document).ready(function() {

  var u = $('#username'),
      s = $('#server'),
      p = $('#password');

  function doYourAjaxCall() {
    $.post("connect.php", { 
      s: s.val(), 
      u: u.val(), 
      p: p.val() 
    },
    function(data) {
      $('#hol').html('checking connection...' + u.val() + " " + p.val() + " " + s.val() + " " + data);
    });
  }

  u.keyup(doYourAjaxCall);
  s.keyup(doYourAjaxCall);
  p.keyup(doYourAjaxCall);

});

与往常一样,我建议阅读良好的 C# 习惯如何鼓励不良的 JavaScript 习惯

于 2012-07-26T11:09:23.060 回答