javascript - 使用jquery将ajax调用返回值分配给var

标签 javascript ajax jquery global-variables

如何将变量 (var) 分配给从对服务器的 ajax 调用返回的 json 对象?我需要在 body 的其余部分访问该对象。

例如,我试过这个,我不知道它是否正确。

var selectValues=$(document).ready(function() {
    $.ajax({
                  type: "POST",
                  url: "http://10.0.2.2/mobileajax/callajax.php",
                  data: ({name: theName}),
                  cache: false,
                  dataType: "text",
                  success: onSuccess
                });
})


var $vendor = $('select.mobile-vendor');
var $model = $('select.model');
$vendor.change(
              function() {
                  $model.empty().append(function() {
                      var output = '';
                      $.each(selectValues[$vendor.val()], function(key, value) {
                          output += '<option>' + key + '</option>';
                      });
                      return output;
                  });
              }).change();

// bonus: how to access the download link
$model.change(function() {
    $('a#download-link').attr('href', selectValues[$vendor.val()][$model.val()]).show();
});

请注意,变量 selectValues 用于正文的其余部分。

最佳答案

我认为您应该在 $(document).ready(function() 函数中完成整个代码,然后使 ajax 调用同步。因为现在将在文档时进行 ajax 调用准备好了,但是其他代码会直接运行,不需要等待文档准备好。另外ajax调用默认是异步的,所以你应该让它同步,并在success里面赋值selectValues变量ajax调用的函数,会变成这样:

$(document).ready(function() {
        var selectValues;
        $.ajax({
              type: "POST",
              url: "http://10.0.2.2/mobileajax/callajax.php",
              data: ({name: theName}),
              cache: false,
              dataType: "text",
              async: false,
              success: function(data) {
                selectValues = data
              }
            });

            var $vendor = $('select.mobile-vendor');
            var $model = $('select.model');
            $vendor.change(
                          function() {
                              $model.empty().append(function() {
                                  var output = '';
                                  $.each(selectValues[$vendor.val()], function(key, value) {
                                      output += '<option>' + key + '</option>';
                                  });
                                  return output;
                              });
                          }).change();

            // bonus: how to access the download link
            $model.change(function() {
                $('a#download-link').attr('href', selectValues[$vendor.val()][$model.val()]).show();
            });
})

关于javascript - 使用jquery将ajax调用返回值分配给var,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8092829/

相关文章:

javascript - “调试器”命令和 JSLint

PHP & MYSQL 数据库插入空白

jquery - 操纵没有类或 ID 的特定 <div> 的 CSS

javascript - jQuery、Ajax、WP、发布 4000B 长文本 : 404 not found (2000B=OK)?

javascript - 我如何从中创建 Bootstrap 行? ( react JS)

javascript - 即使满足条件,ng-show 也不起作用

javascript - 在 IE11 中未清除 cookie(通过 Javascript 写入 document.cookie 来设置 cookie)

ajax - 我可以使用 JS 从 Web 应用程序前端直接向 AWS SQS 发送请求吗?

javascript - Ajax 405 (Method Not Allowed) 跨域问题

javascript - OnClick 传递 url 参数