【问题标题】:jQuery load to variablejQuery加载到变量
【发布时间】:2011-06-01 15:15:51
【问题描述】:

我需要将 jQuery 加载的结果插入到变量中。

ajax.html 页面上带有 id 测试的元素的内容。

$('#result').load('ajax.html #test');

【问题讨论】:

    标签: jquery ajax get


    【解决方案1】:

    尝试改用jQuery.get

    例如。

    $.get('ajax.html', function (data) {
        data = $(data).find('#test');
        // data contains your html
    });
    

    【讨论】:

      【解决方案2】:
      $('#result').load('ajax.html #test', function(result) {
          var variable = $('#result').html();
      });
      

      【讨论】:

      • 这看起来是一种合理的方法,但那只是在回调的范围内设置一个变量......这不会有太大帮助。
      • @Jamie Wong,众所周知,AJAX 调用的结果仅在回调中可用,因此在此成功回调之外的任何位置设置此变量的值将毫无意义。
      • @Jamie:所以,在全局范围内设置一个变量,或者其他什么。
      • @Darin 你的方法对我来说看起来很骇人听闻。与使用普通 AJAX 请求并自己搜索 #test 内容相比,它的代码更少,但它会对 #result 进行不必要的加载。
      • @Alin Purcaru,为什么没有必要?我认为 OP 的目的是将 AJAX 调用的结果加载到 #result 中,除此之外将其分配给一个变量。如果不是这种情况,显然使用$.ajax() 会更好。
      【解决方案3】:

      或多或少与上述相同,但更简单:

      var dt;
          $.get("ajax.html", function (data) {
              dt = data;
              // data contains your html
          });
      

      【讨论】:

      【解决方案4】:
      $(document).ready(function(){
          $('#result').load('/ p#name', function(result) {
              var obj = $(this).find('p#name'), html = obj.html();
              obj.css({'font-size':40});
              $(this).append($('<div>').text(html));
          });
      });
      

      JSFiddle 上的示例http://jsfiddle.net/kuroir/stD94/

      【讨论】:

        【解决方案5】:

        我在所有寻求帮助的 stackoverflow 线程上发布此消息,以将 jQuery ajax 方法中的数据塞入变量而不是 HTML 元素中,因为我很难找到可行的解决方案。我终于找到了解决方案,我只想与任何对此感到困难的人分享。

        我的问题是,在事件的“document.ready”阶段,我很难将 jQuery ajax 的结果放入我的变量中。

        我的测试表明,当用户在页面加载后触发选择框的“onchange”事件时,jQuery 的 ajax 会加载到我的变量中,但在页面首次加载时数据不会提供变量。但我不想在我的“onchange”事件上触发任何 ajax;我希望 变量 在页面加载时提供 ajax 数据来处理这项工作。 变量 用于在用户触发“onchange”事件时动态更改数据。这种方式在用户与表单交互时没有延迟/ajax;页面加载后数据即可使用。

        我尝试了很多很多很多不同的方法,但最后我需要的代码在这个 stackoverflow 线程上:JQuery - Storing ajax response into global variable

        我使用了 Charles Guilbert 的回复。使用他的回答,我能够将数据放入我的变量中,即使我的页面第一次加载也是如此。

        这是一个工作脚本的示例 - 希望它对某人有所帮助!

        jQuery.extend
        (
            {
                getValues: function(url) 
                {
                    var result = null;
                    $.ajax(
                        {
                            url: url,
                            type: 'get',
                            dataType: 'html',
                            async: false,
                            cache: false,
                            success: function(data) 
                            {
                                result = data;
                            }
                        }
                    );
                   return result;
                }
            }
        );
        
        // Option List 1, when "Cats" is selected elsewhere
        optList1_Cats += $.getValues("/MyData.aspx?iListNum=1&sVal=cats");
        
        // Option List 1, when "Dogs" is selected elsewhere
        optList1_Dogs += $.getValues("/MyData.aspx?iListNum=1&sVal=dogs");
        
        // Option List 2, when "Cats" is selected elsewhere
        optList2_Cats += $.getValues("/MyData.aspx?iListNum=2&sVal=cats");
        
        // Option List 2, when "Dogs" is selected elsewhere
        optList2_Dogs += $.getValues("/MyData.aspx?iListNum=2&sVal=dogs");
        

        【讨论】:

          【解决方案6】:

          试试$.ajax$.load 只是一个捷径。

          【讨论】:

            【解决方案7】:

            如果你想要完全加载函数,试试这个:

            var temp;
            $(new Object()).load('YourUrl', { param: "smth" }, function(data){
              $('#element').prepend(data); //if you want prepend/append result to some html
              temp = data; //if you want put to variable
            });
            

            【讨论】:

              【解决方案8】:
              $('#submit').click(function(){ var taval = $("#message").val();
              $("#showcomment").load('comments.php', {commentval:taval}) });
              

              【讨论】:

              • 您需要在答案中添加上下文。
              【解决方案9】:

              使用setTimeout

              <script> 
                  my_var=$('#hidden').load('new.html');
                  setTimeout(function(){
                      my_var=my_var.html();
                      alert(my_var);
                  }, 500);
              </script>
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2015-12-25
                • 2011-07-14
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2015-11-19
                相关资源
                最近更新 更多