无法在jQuery中获得<select>元素的值

我想在jQuery中创建一个像google sheet这样的Web应用程序,但当我尝试获取&lt时 ;选择&gt; </ code>值与 $(select).val()</ code>我得到`null。</ p>

我试着将代码放入 $(按钮).click()</ code>然后它工作,所以我认为问题是Javascript是在HTML之前执行的,但我不确定。</ p>

  $  (function(){
$ .post(“getTablesName.php”,function(data){
$(“#tables_SCT”)。html(data);
});

var name = $ (“#tables_SCT”)。val();
$ .get(“getTable.php”,{name:name},function(data){
$(“#columns”)。html(data); \ n});
)};
</ code> </ pre>

我只想获得 $(“#tables_SCT”)。val()</ code> 。</ p>
</ div>

展开原文

原文

I want to create a web app like google sheets in jQuery, but when I try to get a <select> value with $(select).val() I get `null.

I tried to put the code into $(button).click() and then it worked so I think the problem is that Javascript is executed before HTML, but I am not sure.

$(function() {
  $.post("getTablesName.php", function(data) {
    $("#tables_SCT").html(data);
  });

  var name = $("#tables_SCT").val();
  $.get("getTable.php", { name: name }, function(data) {
    $("#columns").html(data);
  });
)};

I just want to get the $("#tables_SCT").val().

douliang1891
douliang1891 哦,是的,我明白了!非常感谢你!它现在正在运作!
一年多之前 回复
doumao8803
doumao8803 一点也不。您可以在页面加载时使代码正常工作,下面的答案将向您展示如何构建它。
一年多之前 回复
dqenv99518
dqenv99518 好的,所以我别无选择创建一个按钮来加载我的数据吗?
一年多之前 回复
doubeng3216
doubeng3216 使用AJAX时这是不可能的。您必须等待请求完成。这就是您需要使用回调模式的原因。如果要立即加载数据,则需要在PHP中生成数据并在最初加载时将其添加到页面中。
一年多之前 回复
dpba63888
dpba63888 好的,我理解,但我希望这些数据在我的HTML后立即加载
一年多之前 回复
dsklzerpx64815631
dsklzerpx64815631 它是您在$.post的第二个参数中定义的处理函数。这是从您进行的AJAX调用返回数据时将执行的逻辑。有关更多信息,请参阅文档:api.jquery.com/jquery.post。我在下面为您添加了一个答案,以使其更清晰
一年多之前 回复
douzhuangxuan3268
douzhuangxuan3268 它看起来可能很愚蠢,但什么是AJAX回调?^^”
一年多之前 回复

1个回答



您需要输入 var name = $(“#tables_SCT”)。val(); </ code> 第一个AJAX回调中的行。 就目前而言,您的代码正在尝试读取DOM中尚不存在的内容,因为填充选项元素的请求是异步的。 </ p>

出于同样的原因,您还需要从这一点开始第二次AJAX调用。 试试这个:</ p>

  $(function(){
$ .post(“getTablesName.php”,function(data){
$(“#tables_SCT”)。 html(data);

var name = $(“#tables_SCT”)。val();
$ .get(“getTable.php”,{name:name},function(data){
$ (“#columns”)。html(data);
});
});
)};
</ code> </ pre>
</ div>

展开原文

原文

You will need to put the var name = $("#tables_SCT").val(); line inside the first AJAX callback. As it stands your code is trying to read content which doesn't yet exist in the DOM as the request which fills the option elements is asynchronous.

You will also need to make the second AJAX call from this point too, for the same reason. Try this:

$(function() {
  $.post("getTablesName.php", function(data) {
    $("#tables_SCT").html(data);

    var name = $("#tables_SCT").val();
    $.get("getTable.php", { name: name }, function(data) {
      $("#columns").html(data);
    });
  });
)};

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐